在iframe IE8中的函数中传递事件对象

时间:2013-03-08 09:35:14

标签: javascript internet-explorer

我在iframe中动态加载.htm文件(.htm在我的域中),如下所示:

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 个答案:

答案 0 :(得分:-1)

首先,以这种方式分配你的ifram字符串:

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

否则它无法正常工作。

然后,尝试使用 var 定义变量,这样就可以防止其内容变为 undefined

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;
    }
}