2013-03-08 38 views
-1

我動態加載一個.htm文件的iframe內(與.htm是在我的域)這樣的:通過事件對象在函數內部的iframe IE8

el.innerHTML = "<iframe id='frmBook' onload='on_load()' src='blabla.htm'"; 

我ON_LOAD是這樣的:

function on_load() { 

    document.getElementById("frmBook").contentWindow.document.body.ondblclick = function(event) { 
     var oTextRange; 
     if (!document.selection) { 
      oTextRange = window.getSelection(); 
      if (oTextRange.rangeCount > 0) oTextRange.collapseToStart(); 
     } 
     getWord(event); 
    } 

    document.getElementById("frmBook").contentWindow.document.body.oncontextmenu = function(event) { 
     showContextMenu(event); 
     return false; 
    } 
} 

現在我需要傳遞事件對象,因爲它在getWord()和showContextMenu()中都使用。它用於getWord()獲取e.target.id(或e.srcElement),並在showContextMenu()中使用e.page.X.麻煩的是,IE8無法識別(未定義)事件對象,因此它無法通過。有沒有辦法通過IE8的事件對象?

在此先感謝!

回答

-1

首先,這種方式分配您ifram字符串:

el.innerHTML = '<iframe id="frmBook" onload="on_load()" src="blabla.htm"></iframe>'; 

否則無法運行。

然後,嘗試與VAR定義變量,這樣可以防止它的內容變得不確定

function on_load() { 

    document.getElementById("frmBook").contentWindow.document.body.ondblclick = function(event) { 
     var e = event; 
     var oTextRange; 
     if (!document.selection) { 
      oTextRange = window.getSelection(); 
      if (oTextRange.rangeCount > 0) oTextRange.collapseToStart(); 
     } 
     getWord(e); 
    } 

    document.getElementById("frmBook").contentWindow.document.body.oncontextmenu = function(event) { 
     var e = event; 
     showContextMenu(e); 
     return false; 
    } 
} 
相關問題