ページにiframeを追加するGreasemonkeyスクリプトがあります(ページ1)。 iframeには別のページが含まれています(ページ2)。スクリプトは2ページでも実行されます。ページ1とページ2は異なるドメインにあります。Greasemonkeyを使用してiframeの親の関数を呼び出す方法
ページ2で実行されているコードでページ1の関数を呼び出すことを許可したいと思います.Greasemonkeyコードの制限が低い場合、これは可能ですか?
ページにiframeを追加するGreasemonkeyスクリプトがあります(ページ1)。 iframeには別のページが含まれています(ページ2)。スクリプトは2ページでも実行されます。ページ1とページ2は異なるドメインにあります。Greasemonkeyを使用してiframeの親の関数を呼び出す方法
ページ2で実行されているコードでページ1の関数を呼び出すことを許可したいと思います.Greasemonkeyコードの制限が低い場合、これは可能ですか?
ドメインが異なるため、ブラウザがこれを防止します。
あなたは、フレーム間の通信に使用できるトリックのカップルがあります:
広告3: 他のフレームのURLを読み取ることはできませんが、設定することはできます。あなたは正確に同じページにURLを変更しますが、URLに#anchorコンポーネントと、ページが実際にリロードしない場合:
window.frames["childFrame"].location.href = "http://www.somewebsite.com/#message"
その後、定期的にその外側のページにスクリプトを追加する必要があるだろうそれはlocation.hrefをポーリングし、メッセージを処理します。はい、それは醜いですが、正しく行えば、すべての一般的なブラウザで動作します。
、postMessage()はうまくいきます。私の考えは、Greasemonkeyスクリプトに与えられた権限を悪用して、同じドメイン制限を回避することでした。これの方が良い; postMessage()は実際にこれを意図しています。 :) – Peeja
私は今IE7をサポートしなければならないので、私はpostMessage()をあきらめました。私は#1もできません。 #3私はすることができますが、私はそれを働かせることはできません。 FF3では少なくとも、親の現在のURLにもwindow.parent.location.hrefを設定する権限はありません。何か不足していますか? – Peeja
ええと、私は親フレームから埋め込みフレームへの通信にのみこのメソッドを使用しました。フレームが途切れることを防ぎ、自分自身をトップページにすることを防ぐための制限があると思われます。 – Thorarin