我在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的事件对象?
提前感谢!
答案 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;
}
}