Javascript 包括不使用';不尊重闭包用法

Javascript 包括不使用';不尊重闭包用法,javascript,jquery,drupal,closures,Javascript,Jquery,Drupal,Closures,我必须包含一个外部javascript文件,作为我正在处理的Drupal项目的一部分。 不幸的是,此外部文件没有正确使用闭包,例如: (function($) { function test() {...} })(jQuery); function test2() { console.log($('#xyz').val()); } 每当执行test2()时,都会导致“$is undefined”错误 我知道Drupal明智地使用闭包来实现库的和谐共存,这非常有用,但在这种情况下

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

(function($) {
    function test() {...}
})(jQuery);
function test2() {
    console.log($('#xyz').val());
}
每当执行test2()时,都会导致“$is undefined”错误

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

有没有什么方法可以让这个外部文件访问权限使用$作为jQuery的指针? 理想情况下,我希望有一个解决方案,它不需要在我的终端进行大量的变通,但仍然可以利用外部版本

如果做不到这一点,我只需要一个本地副本,并进行相应的修复

谢谢

只需分配一个全局变量

window.$ = jQuery
只需分配一个全局变量

window.$ = jQuery

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

$js = file_get_contents("externaljsfile");

echo ";(function($) {";

echo $js;

echo "})(jQuery);";

我听说有一种方法,使用导入的javascript可能会工作(javascript宏?),但是我从来没有读过它们(如果它们存在的话),它们也不会;无论如何,如果没有足够多的浏览器支持成为可行的解决方案,您需要复制并修改它以适应,或者使用PHP获取文件并输出它,例如,如果您将javascript src指向本地PHP文件,在该PHP文件中,您可以执行以下操作

$js = file_get_contents("externaljsfile");

echo ";(function($) {";

echo $js;

echo "})(jQuery);";

我听说有一种方法,使用导入的javascript可能会工作(javascript宏?),但是我从来没有读过它们(如果它们存在的话),它们也不会;无论如何,我都不希望有足够多的浏览器来支持它成为一个可行的解决方案

我希望它会像这样简单。谢谢我希望是这样简单的事情。谢谢很好的评论,但是。。实际上在最后使用了非常类似的东西-谢谢!很好的评论,但是。。实际上在最后使用了非常类似的东西-谢谢!