1

我必须包含一个外部 javascript 文件作为我正在处理的 Drupal 项目的一部分。不幸的是,这个外部文件没有正确使用闭包,例如:

(function($) {
    function test() {...}
})(jQuery);
function test2() {
    console.log($('#xyz').val());
}

每当执行 test2() 时,都会导致“$ is undefined”错误。

我知道 Drupal 明智地使用闭包来允许库的和谐共存,这非常有用,但在这种情况下,让负责所述外部 JS 文件的团队进行必要的更改将是一场噩梦(并且还将涉及试图向负责的“专家”解释)。

有什么方法可以让这个外部文件访问使用 $ 作为指向 jQuery 的指针?理想情况下,我想要一些不涉及大量解决方法的解决方案,但仍然可以使用外部版本。

如果做不到这一点,我将只获取一个本地副本,并进行相应的修复。

谢谢!

4

2 回答 2

3

只需分配一个全局。

window.$ = jQuery
于 2012-08-06T14:53:39.803 回答
1

您要么需要复制并修改它以适应,要么使用 PHP 获取文件并输出它,例如,如果您将 javascript src 指向本地 php 文件,则在该 php 文件中您可以执行类似的操作

$js = file_get_contents("externaljsfile");

echo ";(function($) {";

echo $js;

echo "})(jQuery);";

我听说过一种使用导入的 javascript 可能有效的方法(javascript 宏?),但是我从来没有读过它们(如果它们甚至存在的话)并且它们不会被足够的浏览器支持成为无论如何可行的解决方案

于 2012-08-06T14:55:48.947 回答