English 中文(简体)
有没有一个好的方法可以防止重新定义jQuery?
原标题:Is there a good way to prevent jQuery from being redefined?

我遇到了一个问题,花了我一些时间来调试,其中我正在使用jQuery插件(在这种情况下是jFeed)无法正常工作。问题最终是因为我们还使用了Amazon Associates产品预览。产品预览代码最终通过document.write()包括许多其他JS文件,包括另一个jQuery副本。因为产品预览代码显示在jFeed脚本下面,所以重新定义了jQuery而没有getFeed函数。

有没有最佳实践来确保某些对象,如jQuery只在页面上定义一次?我在想类似于C / C ++中的#ifndef,但我不知道在这种情况下它如何工作,因为我没有编写动态拉入jQuery的代码。

最佳回答

我认为在你的情况下,重新定义jQuery变量为其他名称可能是最好的选择。其他的jQuery代码可能使用不同版本,所以你可能想要定义一个新的变量来指示你正在使用哪个jQuery版本。

你可以做类似这样的事情:

 <script>
    var $jMain = jQuery;
 </script>

然后,您只需使用$jMain,而不是jQuery$。您需要确保在执行此操作时拥有正确的jQuery对象。以下是文档

问题回答

不幸的是,一个 JS 沙盒内部的环境(比如浏览器窗口或框架内)并没有真正为支持从各种地方引入脚本的现代世界而设计;你无法说 "定义此对象并使其抗重定义"。 (如果你尝试,甚至可以重新定义大多数 Javascript 内置函数!)

你的最好枪声是,确保你们的法典是最后的,这给你带来了环境运行状况的最后发言权。 这并不意味着其他法典可能随时间推移而去,并且掩盖了你们的定义,但这种形式一般是坏的。 你可以通过把你的文字标签作为文件的最后内容来做到这一点。

请注意这个 jQuery 方法,它不能直接帮助你,但它可以让你思考关于页面共享的一些解决方案:http://api.jquery.com/jQuery.noConflict/





相关问题
selected text in iframe

How to get a selected text inside a iframe. I my page i m having a iframe which is editable true. So how can i get the selected text in that iframe.

How to fire event handlers on the link using javascript

I would like to click a link in my page using javascript. I would like to Fire event handlers on the link without navigating. How can this be done? This has to work both in firefox and Internet ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Clipboard access using Javascript - sans Flash?

Is there a reliable way to access the client machine s clipboard using Javascript? I continue to run into permissions issues when attempting to do this. How does Google Docs do this? Do they use ...

javascript debugging question

I have a large javascript which I didn t write but I need to use it and I m slowely going trough it trying to figure out what does it do and how, I m using alert to print out what it does but now I ...

Parsing date like twitter

I ve made a little forum and I want parse the date on newest posts like twitter, you know "posted 40 minutes ago ","posted 1 hour ago"... What s the best way ? Thanx.

热门标签