2010-11-06 280 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) ?