firefox addon - self.port.on与$(jquery)冲突。

时间:2012-12-27 14:07:36

标签: javascript jquery firefox-addon

在我的main.js文件中:我将contentScriptFile配置为script.js。此外,此脚本文件嵌入在index.html中,该选项卡将使用tabs.open打开。

我在该脚本文件中有self.port.on和jquery相关的东西。如果self.port写在其他jquery事物的顶部,self.port.on正在工作,jquery不起作用。但是,self.port.on写在下面,jquery工作正常,self.port不起作用。

脚本文件实际上处理使用self.port获取的数据(仅在打开选项卡时才会出现)。

3 个答案:

答案 0 :(得分:1)

如何在安全的环境中包装所有jQuery代码?

使用$:

(function($) {
    // use $
})(jQuery)

使用$ jq:

(function($jq) {
    // use $jq
})(jQuery)

答案 1 :(得分:0)

使用jQuery的noConflict设置。

$jq = jQuery.noConflict(); //use $jq instead of $

答案 2 :(得分:0)

许多JavaScript库使用$作为函数或变量名,就像jQuery一样。在jQuery的情况下,$只是jQuery的别名,因此所有功能都可以在不使用$的情况下使用。如果我们需要在jQuery旁边使用另一个JavaScript库,我们可以通过调用$.noConflict()将$的控制权返回给另一个库:

<script type="text/javascript" src="other_lib.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
  $.noConflict();
  // Code that uses other library's $ can follow here.
</script>

这种技术与.ready()方法对jQuery对象进行别名的能力特别有效,因为在传递给.ready()的回调中,如果我们愿意,我们可以使用$而不用担心以后的冲突:

<script type="text/javascript" src="other_lib.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
  $.noConflict();
  jQuery(document).ready(function($) {
    // Code that uses jQuery's $ can follow here.
    $("div").hide();
  });
  // Code that uses other library's $ can follow here.
  $("content").style.display = 'none';
</script>

来源:jQuery.noConflict