-1

onclickJavaScript DOM を使用して 内のリンクにイベントを適用するにはどうすればよいiframeですか?

これが私が試していることですが、うまくいきません:

document.getElementById('myIframe').contentDocument.getElementsByTagName('a').onclick = function();

エラーはスローされていないようで、iframe.

これは、テストして、少なくともdivmy にある の数を数えることができるかどうかを確認するコードiframeです。

// access body
var docBody = document.getElementsByTagName("body")[0];

// create and load iframe element
var embed_results = document.createElement('iframe');
embed_results.id = "myIframe";
embed_results.setAttribute("src", "http://www.mysite.com/syndication/php/embed.php");

// append to body
docBody.appendChild(embed_results);

// count the divs in iframe and alert   
alert(document.getElementById("myIframe").contentDocument.getElementsByTagName('div').length);
4

2 に答える 2

7

iFrame は、別のドメインの別の Web サイトからコンテンツを取得することができます。

他のドメインのコンテンツにアクセスできることは、ユーザーにとってセキュリティ上の脆弱性を意味するため、Javascript を介してこれを行うことはできません。

このため、ページ内のイベントを iFrame 内のコンテンツに添付することはできません。

于 2009-04-15T21:59:26.847 に答える
3

getElementsByTagNameはNodeCollectionを返すため、このコレクションを反復処理し、そのコレクション内のすべてのノードにonclickハンドラーを追加する必要があります。以下のコードが機能するはずです。

var links = document.getElementById('myIframe').contentDocument.getElementsByTagName('a');
for(var i=0;i<links.length;++i)links[i].onclick=function(){}

また、フレームのコンテンツがロードされた後にこのコードを実行することを確認してください

embed_results.onload=function(){
   // your code
}
于 2009-04-15T22:09:59.957 に答える