在一个网站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并不那么强大,所以它可能会让世界变得与众不同。
答案 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) ?