2

iframe私は、その名前で直接アクセスするいくつかの JavaScript コードを継承しましgetElementById()た。これが実際に合法であるという兆候は見つかりませんが、私が試したブラウザー (Chrome、Firefox、IE10、Safari for Windows) では動作するようです。

簡単なテストケース:

<iframe name="iFrameName" id="iFrameId" src="test2.html"></iframe>
<button onclick="iFrameName.myFunction();">click me</button>

また、iframe の test2.html src には以下が含まれます。

<script type="text/javascript">
    function myFunction()
    {
        alert("OH HAI!");
    }
</script>

ボタンをクリックすると完全に機能します。アラート「OH HAI」がポップアップします。

これはどのように作動しますか?それはうまくいくはずですか?信頼しても安全getElementById()ですか、それとも iframe を取得するために使用する必要がありますか?

4

1 に答える 1

2

これはどのように作動しますか?それはうまくいくはずですか?

はい、要素に名前でしかアクセスできなかった時代があり、ほとんどの (すべて?) ブラウザーは今でもそれをサポートしています。それについては QuirksMode ページを参照してください。これは何年も前に書かれたものですが、まだ適用されています。

頼っても安全getElementById()ですか、それとも iframe を取得するために使用する必要がありますか?

document.getElementById()およびその他の最新の方法を使用する必要があります。名前に頼ると、すぐにコードがめちゃくちゃになります。

于 2013-07-09T04:23:22.647 に答える