3

私の Firefox アドオンは、コンテンツ スクリプト (page-mod) から Fancybox (タイプ: "iframe") を開きます。Fancybox で、自分のサーバーにある自分の HTML ページ ( my_fancybox_stuff.html ) を表示します。

my_fancybox_stuff.js( my_fancybox_stuff.htmlの javascript )から、アドオンの にメッセージを送信できますmain.jsか? それとも、Fancybox を開いたコンテンツ スクリプトに?

Fancybox を開いたコンテンツ スクリプトからアクセスできるため、my_fancybox_stuff.js からグローバルな「self」オブジェクトにアクセスできることを望んでいました。

これを実現するための潜在的な回避策について知りたいです。

Chrome 拡張機能では、これは簡単です。my_fancybox_stuff.js私は呼び出すことができ、それchrome.extension.sendMessage()は機能します。

前もって感謝します!

編集:私のケースを明確にするためにいくつかのコードを追加します。コードを単純化して、コードを読む時間を節約しました。これは、Hello World のように簡単です。

contents_scipt.js (page-mod で注入) から、次のように呼び出します。

$.fancybox.open(
    {
    // Some irrelevant Fancybox options hidden for clarity
    href:"http://www.mysite.com/my_fancybox_stuff.html
    type: 'iframe'
    }
);

my_fancybox_stuff.html は次のようになります。

<!doctype html>
<head>
  <meta charset="utf-8">
  <title></title>
  <script src="js/jquery.js"></script>
  <script src="js/my_fancybox_stuff.js"></script>
</head>
<body>
<div id="my-wrapper">
  <div id="my-form-div">
    <form id="my-form" action="#">
      <div>
        <div><p>Name</p></div>
        <div><input id="fullname" type="text" name="fullname" value=""></div>
      </div>
      <div>
        <div><p><a id="my-button" href="#">Press this</a></p></div>
      </div>
    </form>
  </div>
</div>
</body>

my_fancybox_stuff.js で、ボタン ("my_button") が押されたときに、入力フィールド ("fullname") の値を含むメッセージを送信し、それを content_script.js でリッスンしたいと考えています。

4

1 に答える 1

2

はい、my_fancybox_stuff.jsは を使用してアドオンのコンテンツ スクリプトと通信できますpostMessage ()

MDN のドキュメントと例を参照してください。

于 2013-06-07T07:16:41.143 に答える