0

ページにiframeを追加するGreasemonkeyスクリプトがあります(ページ1と呼びます)。iframe には別のページが含まれています (ページ 2 と呼びます)。スクリプトはページ 2 でも実行されます。ページ 1 と 2 は異なるドメインにあります。

ページ 2 で実行されているコードがページ 1 の関数を呼び出せるようにしたいと考えています。Greasemonkey コードの制限が低い場合、これは可能ですか?

4

1 に答える 1

1

ドメインが異なるため、ブラウザはこれを防ぎます。

フレーム間の通信に使用できるトリックがいくつかあります。

  1. 他のWebサイトのDNSレコードを外部Webサイトのドメイン(www.somewebsite.comおよびsomeapp.somewebsite.com)に追加します。次に、両方のページのJavaScriptでdocument.domain="somewebsite.com"を使用します。
  2. HTML 5 postMessage()を使用して、フレーム間で通信します。Firefox3とInternetExplorer8で動作することはわかっていますが、IE7では動作しません。
  3. 親ウィンドウのURLを設定することで、簡単なメッセージを別のページに渡すことができます。 注:ブラウザが親URLの設定を妨げているようです。この方法は、親フレームから子フレームへの一方向の通信でのみ機能します。

広告3:他のフレームのURLを読み取ることはできませんが、設定することはできます。URLをまったく同じページに変更したが、URLに#anchorコンポーネントが含まれている場合、ページは実際にはリロードされません。

window.frames["childFrame"].location.href = "http://www.somewebsite.com/#message"

次に、そのlocation.hrefを定期的にポーリングしてメッセージを処理するスクリプトを外部ページに追加する必要があります。はい、それは醜いですが、正しく行われれば、それはすべての一般的なブラウザで動作します。

于 2009-06-07T20:54:16.433 に答える