解决JavaScript冲突

时间:2010-11-06 19:45:37

标签: javascript

在一个网站http://imgthis.com/blog/?p=34上,我有两个JavaScripts加载到带有图像库的iframe内,一个是lytebox,它是一个Light Box 2瘦身克隆图像库弹出窗口,另一个是节目在一堆div中只有一个div。 lytebox脚本一直工作,直到show只有一个被调用,从IE FF和Opera(Chrome和Safari不会抛出错误)的那一点上断了这个错误:

Uncaught exception: TypeError: Cannot convert 'window.parent.frames[window.name]' to object Error thrown at line 223, column 1 in (imageLink, doSlide, doFrame) in [url to script]:
    var anchors = (this.isFrame) ? window.parent.frames[window.name].document.getElementsByTagName('a') : document.getElementsByTagName('a');
called from line 204, column 56 in () in [url to script]:
    myLytebox.start(this, false, false);

在它中断后你必须重新加载页面才能让任何东西再次运作。

我假设它是冲突,因为它只发生在调用其他脚本之后。在演出之前只调用了一个,它完美无缺。

这只是一个嵌入页面的代码:

function showonlyone(thechosenone) {  
  var newboxes = document.getElementsByTagName('div');  
        for(var x=0; x<newboxes.length; x++) {  
              name = newboxes[x].getAttribute('name');  
              if (name == 'newboxes') {  
                    if (newboxes[x].id == thechosenone) {  
                    newboxes[x].style.display = 'block';  
              }
              else {  
                    newboxes[x].style.display = 'none';  
              }
        }
 }
}

我很遗憾他们之间的冲突是因为他们正在寻找不同的元素,尽管我的JavaScript并不那么强大,所以它可能会让世界变得与众不同。

2 个答案:

答案 0 :(得分:1)

找到lytebox.js的第223行并进行以下更改:

  

var anchors =(this.isFrame)? window.parent.frames [window.name] .document.getElementsByTagName('a'):document.getElementsByTagName('a');

到此:

  

var anchors =(this.isFrame&amp;&amp; window.parent.frames [window.name] .document)? window.parent.frames [window.name] .document.getElementsByTagName('a'):document.getElementsByTagName('a');

答案 1 :(得分:0)

我的lytebox.js有2次出现

建议:查看(this.isFrame) ?并替换为(this.isFrame && window.parent.frames[window.name].document) ?