gpt4 book ai didi

javascript - 提供的脚本使用 jQuery 的 $,但 drupal 站点没有启用冲突

转载 作者:行者123 更新时间:2023-11-30 11:55:58 24 4
gpt4 key购买 nike

我有一个 Drupal 7 站点(安装了 jquery-update,FWIW)。 jQuery 似乎是由 jQuery 对象而不是 $ 引用的。这在 https://www.drupal.org/node/171213 中有详细记录。 .

我正在尝试使用提供的脚本来满足某些特定要求。

提供的脚本使用了 $ 对象,所以我得到“TyperError: $ is not a function”。

提供的 HTML 和脚本如下所示:

<div id="grid"><span class="grid-load-error">There was an error loading the interactive grid.</span></div> 
<script type="text/javascript" src="//site.com/tool.js">
</script>

在页面加载时,我收到 TypeError 消息。

我试图将脚本的加载包装在一个闭包中:

<div id="grid"><span class="grid-load-error">There was an error loading the interactive grid.</span></div> 
<script type="text/javascript">
(function($) {
$(function() {
// console.log($('#grid').html());
$.getScript("//site.com/tool.js");
});
})(jQuery);
</script>

我知道 $ 在闭包中工作 - 注释的 console.log() 在取消注释时生成正确的输出。

我假设 $.getScript() 会失败,因为 https://api.jquery.com/jquery.getscript/告诉我脚本是在全局上下文中执行的(如果我正确理解闭包 $ 在这里不是全局的)。

有没有办法从源代码中包含这个脚本,或者我应该编辑它以用“jQuery”替换“$”吗?

最佳答案

$.getScript$.ajax() 的快捷方式然后 jquery 很好,只需将脚本附加到 <head>为你。但是,在您的情况下,这不会像您已经发现的那样起作用。因此,只需创建您自己的 $.getScript

只需获取脚本,然后将其附加到您自己的 <script>标记并将获取的脚本的内容包装在 iffe

<script id="myLib"></script>
<script>
(function ($){
//$.getScript('./tool.js');
$.ajax({
url: './tool.js',
dataType: "text", //force script response to be treated as plain text
success: function(data) {
var myLib = '(function ($){' + data + '}(jQuery));';
$('#myLib').html(myLib);
}
});
}(jQuery));
</script>

您的脚本现在应该可以正常工作了。只要确保

<script id="myLib"></script>

在页面上定义 jQuery 之后出现。

关于javascript - 提供的脚本使用 jQuery 的 $,但 drupal 站点没有启用冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37974409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com