2013-08-30 32 views
1

我會盡我所能保持這種簡單。下面的代碼在IE10正常工作:通過iframe.contentWindow訪問IE中的JS函數

if (!document.getElementById(frames[i][j].toString()).contentWindow.MyFunc()) { 
     alert("Failed"); 
     return false; 
    } 

然而,在IE8,它失敗,因爲「對象不支持此屬性或方法」 MYFUNC() 它,然而,找到contentWindow。

一些潛在的有用信息:
'frames'是一個iframe對象的二維數組。
此代碼存在於父代中。
MyFunc()是在子iframe中定義的。

從本質上講,我的問題歸結爲:

document.getElementById(frames[i][j].toString()).contentWindow.*whatgoeshere?* 

我沒有看到this帖子,但它並沒有被證明幫助不大。
這不是iframe未知的情況(例如:this後),因爲代碼在文檔準備就緒之後很久就會觸發。
雖然錯誤是不同的(拒絕訪問),我想知道是否需要做更復雜的事情,比如我在this的帖子中發現的內容。

+2

既是您的內容,也是在同一個域上的iframe中的內容? – Chris

+1

你應該在IE中記錄whatever.contentWindow的內容,看看它是否是你期望的 – demux

回答

0

感謝Chris和Arnar花費的時間和精力。原來,這完全是我的錯。今天,我一直在尋找MYFUNC(),我注意到,這是依賴於jQuery的validationEngine:

function MyFunc()() { 
    if (!$('#form1').validationEngine('validate')) { return false; } 
    $("#btn").click(); 
    return true; 
    } 

然後我注意到validationEngine JS庫的版本是我的機器上較新的,那麼一個我測試服務器......愚蠢的我,我沒有部署我對validationEngine做的更新...... doh!

對於任何在事後閱讀此文檔的人:
檢查您可能正在使用的任何庫的依賴關係(特別是在子函數中)!