2

1 つのフレームにアイテムのリストを表示するアプリケーションを開発しました。アイテムをクリックすると、別のフレームで何かが実行されます (画像が読み込まれます)。

これは、Chrome 3 を含むすべてのブラウザーで正常に機能していました。今でもFirefoxでは問題なく動作しますが、Chromeの最近のバージョン(4以降だと思います)では、次のエラーがスローされます。

安全でない JavaScript が URL (...) のフレームから URL (...) のフレームにアクセスしようとしています。ドメイン、プロトコル、およびポートが一致する必要があります。

これは明らかにセキュリティの「機能」ですが、それを回避することは可能ですか?

簡単なテストを次に示します。

index.html:

<html>
  <frameset cols="50%,50%">
    <frame src="left.html" name="left"/>
    <frame src="right.html" name="right"/>
    </frameset>
  </html>

left.html:

<html>
  <body>
    <a href="javascript:parent.right.test('hello');">click me</a>
    </body>
  </html>

right.html:

<html>
  <body>
    <script>
      function test(msg) {
        alert(msg);
        }
      </script>
    </body>
  </html>

上記は Firefox 3.6 および Chrome 3 では機能しますが、Chrome 5 では上記のエラーがスローされます...

編集

  • @cols 属性をフレームセット要素に追加しました
  • 実際、ページが http プロトコルで (および同じドメインから) 提供されている場合にのみ、Chrome で機能しますが、私の問題は、ページがローカルであり、 file:// プロトコルから提供されている場合です。次に、Firefox(すべてのバージョン)とChrome 3で動作しますが、Chrome 5では動作しません(Chrome 4を持っていないため、その特定のバージョンについてはわかりません(特定のChromeバージョンをダウンロードできるかどうかさえわかりません) ?) -- しかし、Chrome 5 では動作しないと確信しています)。
4

2 に答える 2

1

テスト ページを試してみましたが、Windows 上の Chrome 4.1.249.1045 (および Firefox 3.6.3、IE7 [以下の問題を修正した後] ) で問題なく動作します。だから私は(いつものように)ペッカと一緒です:問題は別の場所にあるに違いないと思います。

IE7 では機能していませんでした。その理由を理解するのに永遠にかかりました。タグにrowsまたはcolsを指定する必要がありframesetます。そうしないと、IE は 1 つのフレームのみをロードします。(バリデーターは、私が尋ねたなら、私にそう言ったでしょう。)

于 2010-04-03T09:12:22.650 に答える
1

密接に関連する質問への回答を参照してください:ファイル プロトコルを使用して、Chrome の iframe で定義された JavaScript 関数を呼び出します

--allow-file-access-from-files簡単に言えば、エラーが報告されない限り、Chrome を起動すると問題が「解決」します。

もちろん、CD でファイルを配布しているので、これが実際の解決策であるとは考えにくいでしょう。Chromium のバグ 47416にスターを付けて、Chromium の開発者が Chrome を Gecko の動作とより一致させるよう奨励することをお勧めします。

于 2011-02-25T20:21:45.907 に答える