-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 がイベント オブジェクトを認識しない ( undefined ) ため、渡されないことです。IE8 のイベント オブジェクトを渡す方法はありますか?

前もって感謝します!

4

1 に答える 1

-1

まず、iframe 文字列を次のように割り当てます。

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 に答える