0

ページドキュメントから、またはparentObjが渡された場合はparentObj.documentから、IDで要素を取得するjavascript関数があります。

ただし、IE10で互換モードでない場合、parentObj.document にアクセスすると「未定義」が返されます。IE 開発者ツールを使用すると、parentObjはドキュメント メンバーがありますが、それは単なる汎用オブジェクトとして扱われます。関数にはさまざまな種類のオブジェクトを渡すことができます。

サンプルコード:

function getJSObject(objID, parentObj)
{
    if (parentObj != null)
    {
        return parentObj.document.getElementById(objID);
    }
    return document.getElementById(objID);
}

(実際の機能ではありませんが、これはアイデアを理解するために投稿することを許可されています。)

基本的に、これは IE10 互換モードで動作し、IE10 互換モード以外では正しく動作しません。これを行う正しい方法は何ですか?

編集:呼び出しコード:

var selectionPage = objWindows[0].document.forms[sourceForm];
if (selectionPage)
{
    var selectionControl = getJSObject(sourceControlID, selectionPage);
}

objWindows は、開かれたポップアップ ウィンドウを追跡する単純なグローバル レベル配列です。sourceForm は、ポップアップ ウィンドウから全体的な js 関数を呼び出したフォームです。

4

2 に答える 2

0

次のようなものを試すことができます(テストされていません):

function getJSObject(objID, parentObj) {
    var parent = parentObj != null) ? parentObj : document;
    var doc;
    while(doc && Object.prototype.toString.call(doc) != "[object HTMLDocument]") {
        doc = doc.parentNode;
    }
    return doc.getElementById(objID);
}
于 2013-09-17T18:40:25.663 に答える