2010-11-06 196 views
0

在一个网站上,http://imgthis.com/blog/?p=34,我有两个加载在带图像库的iframe中的JavaScript,一个是Lytebox,它是一个Light Box 2减少图像库弹出窗口的克隆,另一个是节目在一堆div中只有一个div。该lytebox脚本工作,直到显示只有一个被调用,从这一点上它在IE FF和Opera的破此错误(Chrome和Safari浏览器也不会引发错误):它打破后,必须解决JavaScript冲突

 
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 ISN”如此强大,也许它会让世界变得一切。

+0

在FF中通过Firebug的确切被抛出的错误是“window.parent.frames [window.name]是未定义的”,不知道是否缩小了它。 – 2010-11-06 21:47:26

+0

现在我已经将它从“window.parent.frames [window.name]”更改为“window.parent.frames ['imgthis']”,它似乎正在处理所有事情。虽然我仍然想知道为什么第一个不起作用。 – 2010-11-06 22:24:28

回答

1

行查找lytebox.js 223并进行以下修改:

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

这样:

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

0

lytebox.js有2次出现

建议:查找(this.isFrame) ?,代之以(this.isFrame && window.parent.frames[window.name].document) ?