6

JavaScript が新しくなりました。私のページ (asp.net アプリケーション、サーバー側言語としての vb) で、document.getElementsByTagName("img") を使用してすべての img タグ付き html アイテムを取得しています。特に、このリストに表示されないものがあることに気付きました (それらを配列に入れて、アイテムに個別にアクセスできました - 以下のコード)。このアイテムは iframe 内に含まれています (iframe は SRC などを使用せず、定義されているだけで、その中の html はソース内にあり、別のページからロードされません - これは生成された Crystal レポート ビューアによって自動的に生成されます)実行時に、これを表示するためにコピーできないのはそのためです)。iframe 内にあるため、getElementsByTagName はこの画像を取得していませんか? この img の src にアクセスできるようにする必要があります (画像は、Crystal Report Viewer から自動生成された別のアイテムです)。これがピックアップされない理由がiframeによるものである場合、iframe内のアイテムでこれを実行する方法はありますか? または、iframe 内のすべての「innerhtml」タイプ プロパティを取得して、img src にアクセスできるようにします。ご協力ありがとうございました。

var IMGmatches = [];
        var IMGelems = document.getElementsByTagName("img");
        for (var j = 0; j < IMGelems.length; j++) {
            IMGmatches.push(IMGelems[j]);
        }
4

2 に答える 2

8

これは、iframe 内の要素が親ドキュメントの一部ではないためです。

iframe 内の何かを取得するには、iframe のcontentDocument. したがって、コードは次のようになります。

var IMGmatches = [], IMGelems = document.getElementsByTagName("img"),
    iframes = document.getElementsByTagName('iframe'), l = IMGelems.length,
    m = iframes.length, i, j;
for( i=0; i<l; i++) IMGmatches[i] = IMGelems[i];
for( j=0; j<m; j++) {
    IMGelems = iframes[j].contentDocument.getElementsByTagName("img");
    l = IMGelems.length;
    for( i=0; i<l; i++) IMGmatches.push(IMGelems[i]);
}
于 2012-06-21T18:31:58.943 に答える