0

IE オートメーションを使用して、さまざまな内部 Web ページを処理しようとしています。これらのページの一部は iframe とフレームを使用しているため、それらのフレーム内でも処理できるようにする必要があります。

フレームまたは iframe が親ドキュメントと同じドメインにコンテンツを表示しない場合に問題が発生しましたが、これは問題ありません。

しかし、私には理解できない何かが現れました。

(たとえば) http://www.gmail.com/にアクセスしてログイン ページに移動すると、IHTMLDocument2.frames.length を使用すると、iframe が存在しない場合でも 1 が返されます。IHTMLDocument3.getElementsByName("iframe").length は期待どおり 0 を返します。

これはIE9でのみ発生するようです。IE6 と IE7 は期待どおりに動作しますが、IE8 ではまだテストしていません。

なぜこれが起こるのか、誰にも洞察がありますか? 明らかに実際のタグを数えていますが、常に ITHMLDocument2.frames.length が 1 になっているのはどこでしょうか? セキュリティ設定などでしょうか...?

4

1 に答える 1

0

Chrome の Inspect Element (Mac では IE をテストできません) によると、gmail には少なくとも 5 つの iframe があります。

<iframe style="position: absolute; width: 9em; height: 9em; top: -99em; " tabindex="-1" aria-hidden="true"></iframe>

おそらく、解析している DOM は、外部ページ自体ではなく、これらの Iframe のいずれかのソースですか?

実際、iframe の 1 つには子 iframe がありますが、他の iframe にはありません。これが IHTMLDocument の動作が異なる理由かもしれませんが、それは単なる推測です...

ただし、これらのインターフェイスは両方とも古いものであり、それぞれ IE4 と 5 であることを覚えておく必要があります。

于 2012-02-27T01:25:30.717 に答える