2013-08-29 56 views
4

正在嘗試開發mozilla擴展。我只需要在彈出框中顯示一個iframe,但不知道如何去做。創建mozilla擴展以顯示彈出窗口和iframe

我的要求是

  1. 添加頂部導航工具欄上的一個擴展按鈕
  2. 顯示一個iframe上的彈出,而在擴展按鈕點擊。

我沒有找到類似於此的任何教程。請幫幫我。

謝謝...

Hariprasad

+0

我不是很熟悉,與這樣addon-sdk,b基於xul的擴展是非常直接的。你考慮這樣做嗎? –

+0

我嘗試過使用XUL,但不知道如何在彈出窗口中加載iframe。 –

+0

您是否設法使其工作? –

回答

5

在基於XUL的擴展,你可以做這樣的:

在您的XUL文件:

<toolbarpalette id="BrowserToolbarPalette"> 
    <toolbarbutton id="mainToolbarIcon" 
      image='chrome://yourExt/content/images/icon.png' 
      type="panel" 
      class="toolbarbutton-1 chromeclass-toolbar-additional"> 
     <panel id="toolbarPanel" 
      type="arrow" 
      noautofocus="true" 
      consumeoutsideclicks="true" 
      noautohide="false" 
      onpopupshowing="handleOnLoad();" 
      level="parent"> 

      <vbox id="iframeContainerContainer" align="top"> 
       <iframe id="myframe" width="100" height="100"/> 
      </vbox> 
     </panel> 
    </toolbarbutton> 
</toolbarpalette> 

而在你的js文件:

function handleOnLoad() { 
    var iframe = document.getElementById("myframe"); 
    iframe.setAttribute("src","http://www.google.com"); 
} 

只是嘗試這樣做,它會打開一個面板與谷歌的一個iframe:

enter image description here

+0

正在工作...非常感謝... –

+0

我們如何將當前瀏覽器選項卡的網址傳遞給此iframe? –

+0

我以前有過類似的問題。看到這個:http://stackoverflow.com/q/16236010/1385896 –

3

隨着附加組件-SDK,您可以使用panel,這基本上是一個彈出的iframe。

const { Panel } = require('sdk/panel'); 
let panel = Panel({ 
    contentURL: 'http://mozilla.com', 
    width: 600, 
    height: 600 
}); 
panel.show(); 

掛鉤它變成一個工具欄按鈕,有community created modules允許,可以很容易觸發面板爲好。

+0

所以新的標籤感謝您的建議..我試圖... –

+0

我嘗試這個解決方案,但沒有使用的contentURL當面板內JavaScript的工作。有沒有人獲得目標網址上的腳本來工作!? –

1

試試看看這個代碼。它執行並顯示帶有iframe的彈出窗口。

framework.xul

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE window SYSTEM "chrome://cburl/locale/cburl.dtd"> 
<?xml-stylesheet href="chrome://cburl/skin/framework.css" type="text/css"?> 
<overlay id="xulschoolhello-browser-overlay" 
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 
    <script type="application/x-javascript" src="jquery-1.11.3.min.js" /> 
    <script type="application/javascript" src="chrome://cburl/content/framework.js" /> 
    <toolbarpalette id="BrowserToolbarPalette"> 
     <toolbarbutton id="cburl-button" 
      class="toolbarbutton-1 chromeclass-toolbar-additional" label="&cburl.toolbarbutton.label;" 
      tooltiptext="&cburl.toolbarbutton.tooltip;" image="chrome://cburl/content/img/logo16.png" 
      oncommand="CbUrl[1]()" /> 
     <!-- More buttons here. --> 
    </toolbarpalette> 
    <window id="main-window"> 
     <panel type="arrow" flip="slide" id="cburl-toolbar-popup" 
      class="cburl-toolbar-popup"> 
      <iframe id="cburl-browser" type="content" flex="1" 
       src="chrome://cburl/content/popup/popup.html" width="400" 
       height="540" /> 
     </panel> 
    </window> 
    <!-- More overlay stuff. --> 
</overlay> 

cburl.dtd

<!ENTITY cburl.toolbarbutton.label "CBURL"> 
<!ENTITY cburl.toolbarbutton.tooltip "CBURL"> 

framework.js

var CbUrl = { 

    1 : function() { 
     var toolbar_button = document.getElementById("cburl-button"); 

     document.getElementById("cburl-toolbar-popup").openPopup(
       toolbar_button, "bottomcenter topright", 0, 0, false, false); 
    }, 
}