问题:是否有一种“内置”或“简单”的方法可以在 jquery.js 脚本包含之前设置 jQuery 命名空间?
我问这个问题的原因是因为我正在编写一个利用 jQuery 库的脚本,并且该脚本要运行到一个已经有使用 $
命名空间的库的页面上。通常我可以只使用 jQuery.noConflict() ,但问题是,页面上有一些代码(我无法控制) Hook 鼠标移动事件和其他基本上触发对第三个调用的内容在整个时间里一遍又一遍地编写代码,事实上,在加载 jQuery 脚本和调用 .noConflict()
之间,js 错误常常发生。 我无法控制或更改该第三方脚本。
所以基本上我需要实例化 jQuery 对象,而无需首先使用 $
命名空间。现在..我确信我可以对jquery.js进行逆向工程并使其不这样做,但在我走这条路之前,我想其他人肯定也遇到过这种情况..但我找不到关于jQuery的官方文档用于在脚本包含之前进行设置;仅在那之后。但我想其他人肯定也遇到过这样的问题,但我似乎找不到任何详细说明这一点的现有问题(可能是我不擅长谷歌搜索)。
有人能指出我正确的方向吗?
编辑:
需要明确的是,这基本上是我需要事情发生的顺序:
<script src='thirdpartyscript.js'></script>
<script type='text/javascript'>
jQuery.noConflict();
</script>
<script src='jquery.js'></script>
我显然不能在 jquery.js
脚本包含之前调用 jQuery.noConflict()
,因为 jQuery
对象/方法不还不存在。
但我不能在脚本包含之后调用它,因为在 jquery.js
完全执行和 noConflict
之间需要一段时间> 进行调用时,thirdpartyscript
已经抛出错误,因为 jquery 控制了 $
,即使只有一微秒或 w/e。
所以..我知道我可以编辑jquery.js
以从不使用$
命名空间,但我想知道是否有一个内置的- 在 jquery.js
脚本包含之前以其他方式轻松破解,因为 a) 我不想破解 jquery.js
本身,因为我'我想继续指向 code.jquery.com 而不是维护我自己的实例,b)这样做实际上涉及到弄清楚要更改什么(公平地说,我快速浏览了一下,它看起来并不多。主要是我的警告与点“a”)
最佳答案
不会工作。如果稍后包含该库,则对象“jQuery”不可用。您可以为此创建一个智能“观察者”。
<script src='thirdpartyscript.js'></script>
<script type='text/javascript'>
// Start an interval
var watch = setInterval(function() {
// Check if jQuery available
if(typeof(jQuery) != 'undefined') {
// Stop the interval
clearInterval(watch);
jQuery.noConflict();
}
}, 500);
</script>
<script src='jquery.js'></script>
关于javascript - jquery 在 jquery 脚本包含之前设置 noConflict (或等效项),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22277367/