0

外部 Web ページで css セレクターを見つけるためのツールを作成しています。これは、ターゲット サイトといくつかのコントロール要素を含む iframe を含むプレーンな html ページです。すべてのロジックも jquery を使用して JavaScript で記述されているため、現時点ではサーバー側はありません。

私が直面した問題は、Firefox 26.0 を使用してハンドラー/クラスを iframe ドキュメント要素に追加できないことです。サンプルコード:

 iframe.contents().find("*").hover(function() {
     console.log("This is " + $(this).get(0).tagName + "element");
 }

コンソールに次のエラー メッセージが表示されます: Error: Permission denied to access property 'document'。確かにセキュリティ機能であることは理解していますが、どうにかして回避する必要があります。

私が試したこと:

  • Google Chrome を使用すると、--disable-web-securityこのようなセキュリティ機能をオフにする特別なフラグ ( ) を使用してブラウザを実行できます。それは助けになり、私のツールは期待どおりに機能していますが、正確に Firefox を使用する必要があります。
  • アドオンhttps://addons.mozilla.org/en-US/firefox/addon/forcecors/を使用します。まったく役に立ちませんでした。x-frames-origin header私もそのツールで追加しようとしましたが、結果はありませんでした。
  • security.fileuri.strict_origin_policyFirefox 設定でフラグをオフにします。また、役に立ちませんでした。

多分私は何かを見逃していて、他の回避策/より良い解決策がありますか? どんな助けにも感謝します。

更新: ページと iframe は同じサイトにありません。私のツールは、ローカルの .html ファイル、iframe ソース - 任意のサイト (wikipedia、yahoo など) です。

4

1 に答える 1

0

最後に、解決策を見つけました。アドオンGreaseMonkeyを使用しました。js コードを iframe に挿入できるようになったので、メッセージ API を使用してページのコードを操作できます。例:

  • 親ウィンドウでコードを実行できないようにする:if (window.top == window.self) return;
  • メインウィンドウから何かを受け取る:window.addEventListener('message', yourHandlerHere, false);
  • メインウィンドウに投稿する:window.parent.postMessage(yourDataHere);
于 2014-03-11T13:47:03.213 に答える