1

純粋な Javascript を使用して IFrame にアクセスするには、アドバイスが必要です。

コンテキスト: 関数「Func1」を含む JS スクリプト「A.JS」があります。このページでは、以下に示すように、この関数は IFrame の直前に呼び出されます。

<script> A.Func1();</script>

<iframe src='xyz.com' title='Hello' type='portlet.iframe' > </iframe>

この IFrame はランダムに生成されるため、実行時には ID と名前がわかりません。したがって、アクセスできる唯一の方法は、IFrame の配列のハンドルを取得し、タイトルで正しいものを特定するまで、それぞれをループすることです。

また、JS 関数呼び出しは IFrame の前/上にあることに注意してください。

私の関数Func1()では、私のコードは次のとおりです。正しい IFrame のハンドルを取得しようとしましたが、以下のすべてのメソッドが長さ 0 の配列を返しています。クロムバージョン29でこれを一時停止して見ています。実際、最後の配列iframeNodesAll4は「Windows」を値として表示しています!

var iframeNodesAll1 = document.getElementsByTagName("iframe");
var iframeNodesAll2 = window.parent.document.getElementsByTagName("iframe");
var iframeNodesAll3 = window.document.getElementsByTagName("iframe");
var iframeNodesAll4 = window.frames;

それで、私はここで何が欠けていますか?スクリプトが IFrame の前に呼び出されたりロードされたりしているためですか?

ありがとう!

4

1 に答える 1

0

スクリプトが IFrame の前に呼び出されたりロードされたりしているためですか?

はい、それがあなたの問題だと思います。関数呼び出しを iframe の後に移動してみて、何が起こるか見てみましょう

編集

または、ページが読み込まれるまで待機して関数を実行することもできます。

<script>
window.onload = function() {
  A.func1();
}
</script>
于 2013-08-21T16:58:47.070 に答える