2014-01-21 40 views
1

我有一个JS文件,它在网站上包含两次。如何防止在窗口上附加多个处理程序

  • 包括由用户
  • 我的Chrome扩展注入

JS代码将在窗口的事件侦听器。由于上面解释过的明显原因,此事件监听器被触发了两次而不是一次。

此代码似乎工作正常,但我想知道正确的方法

if (typeof customMessageEventListenerAdded == 'undefined') { 
    addListener(window, 'message', handleMessage); 
    customMessageEventListenerAdded = true; 
} 

我想知道如何正确处理这种情况。

回答

1

我通常撰写我的剧本是这样的(我平时写JS来定制动态CRM但同样的方法应符合“正常”的网页):

if (typeof (window.theScript) == 'undefined') { 
    window.theScript = { 
     someValue: ...; 
     someFunction: function(){ ... }; 
     ctor: function(){ ... }; 
    }; 
    window.theScript.ctor(); 
} 

多夹杂物使iffalse和代码被跳过(显然theScript应该是一个唯一的标识符)。所有的代码都封装在函数中,我可以控制什么叫,什么时候调用和完成。

其他方法在那里(即可以利用requirejs只是为了命名一个)。

+0

+1好方法。我想我可以去做。更好的方法。让我们等待某个时间让其他人以更好的方式加入(如果存在),否则我会接受 – sachinjain024

相关问题