-1

我在 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 传递事件对象?

提前致谢!

4

1 回答 1

-1

首先,以这种方式分配您的 ifra 字符串:

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;
    }
}
于 2013-03-08T13:36:56.130 回答