2012-03-17 10 views
2

現在のページからの情報でiframeを開くアドオンSDKを使用してFirefox拡張機能を作成しています。 iframeへのいくつかのアクションの後、Panelオブジェクトを閉じる必要がありますが、このメッセージをどのようにパイプするかわかりません。何か案は? Chromeでは、ウィンドウを閉じて拡張機能を閉じることができました。Firefoxアドオンのiframeからパネルを閉じる

コード:https://github.com/kippt/kippt-firefox/blob/master/lib/main.js

答えて

2

私はあなたがパネルを閉じたいときに呼び出されるリスナを登録するコンテンツスクリプトを作成する必要があります怖いです。コンテンツスクリプトはself.port.emit('your-event-name')経由アドオンと通信しなければならない、とアドオンコードは、パネルを閉じpanel.port.on('your-event-name')を経由して通知をリッスンする必要があります

 var kipptPanel = require("panel").Panel({ 
      width:400, 
      height:245, 
      // The contentURL should do this to close the panel: 
      // <button id="close-button">self.port.emit('close', null)</button> 
      contentURL : "http://localhost:8000/test-panel.html", 
      contentScript: "document.getElementById('close-button').addEventListener('click', function() {" + 
          " console.log('zz');self.port.emit('close', null);" + 
          "});" 
     }); 
     kipptPanel.port.on("close", function (text) { 
      console.log(text); 
      kipptPanel.destroy(); 
     }); 
     kipptPanel.show(); 

はここmodified version of your code in the add-on builderです。

これは、SDK's panel documentationに記載されています。

私はそれが複雑すぎることを認識しています。window.close()を閉じると考えた場合は、jetpackグループに問い合わせてください。

+0

タブが閉じたときにパネルを閉じても、一般的な機能としては意味がありません。パネルはブラウザのクロムの一部であり、タブには添付されません。 – canuckistani

+0

@canuckistani:質問でその文を解析した方法は、パネルで開いたドキュメントで 'window.close()'を呼び出すと、パネルが閉じます(Chromeで)。それは私には意味がある。 – Nickolay

+0

すごい、これは私が探していたものでした。本当にありがとう! – jorilallo