[Firefox附加組件]0003.彈出對話方塊

來源:互聯網
上載者:User

標籤:

Firefox中使用面板(panel)模組來顯示彈出對話方塊,面板的內容通過HTML編寫。你可以在面板上運行content script,儘管在面板裡的指令碼無法直接存取外掛程式代碼,但是你可以在面板指令碼和外掛程式代碼間交換資訊。這次,我們做了一個會在單擊時顯示面板的動作按鈕。面板上有一個<textarea>元素,使用者按下return鍵時,<textarea>的內容會被發送給外掛程式代碼主程式。外掛程式代碼主程式會在控制台輸出日誌。

開發步驟

1.初始化項目,終端視窗運行以下命令。

mkdir Dialogcd Dialogcfx init


2.編輯Dialog項目lib目錄下的 main.js 檔案。
  

var data = require("sdk/self").data;// 構造面板,從"data"目錄的"text-entry.html"載入// 內容,然後載入"get-text.js"指令碼。var text_entry = require("sdk/panel").Panel({  contentURL: data.url("text-entry.html"),  contentScriptFile: data.url("get-text.js")});// 建立按鈕require("sdk/ui/button/action").ActionButton({  id: "show-panel",  label: "Show Panel",  icon: {    "16": "./icon-16.png",    "32": "./icon-32.png",    "64": "./icon-64.png"  },  onClick: handleClick});// 在使用者點擊按鈕時顯示面板。function handleClick(state) {  text_entry.show();}text_entry.on("show", function() {  text_entry.port.emit("show");});// 監聽來自content指令碼的text-entered訊息。訊息主體L是使用者輸入的文本。// 此實現,我們只在控制台顯示日誌。text_entry.port.on("text-entered", function (text) {  console.log(text);  text_entry.hide();});

 

3.在Dialog項目data目錄下建立content指令碼 get-text.js檔案  

// 使用者按下斷行符號,發送text-entered訊息給main.js。// 訊息主體是編輯框的內容。var textArea = document.getElementById("edit-box");textArea.addEventListener(‘keyup‘, function onkeyup(event) {  if (event.keyCode == 13) {    // Remove the newline.    text = textArea.value.replace(/(\r\n|\n|\r)/gm,"");    self.port.emit("text-entered", text);    textArea.value = ‘‘;  }}, false);// 監聽由外掛程式主程式發送的show事件。表示面板將要顯示。//// 焦點放在textarea上,這樣使用者可以直接開始輸入。self.port.on("show", function onShow() {  textArea.focus();});

 

4.在Dialog項目data目錄下建立text-entry.html檔案

<html><head>    <style type="text/css" media="all">      textarea {        margin: 10px;      }      body {        background-color: gray;      }    </style>  </head><body>    <textarea rows="13" cols="33" id="edit-box"></textarea>  </body></html>

  

5.儲存下面圖片到data目錄中

  

6.進入Dialog項目運行命令

cfx run


7.點擊按鈕,輸入Hello Firefox,斷行符號。

 

8.查看終端視窗,這邊就接受到我們在Firefox 彈出對話方塊中得內容了。


至此就完美的結束了。

  • main.js:外掛程式主程式,在這裡建立按鈕和面板
  • get-text.js:與面板內容互動的content指令碼
  • text-entry.html:面板的內容,由HTML編寫
  • icon-16.png,icon-32.png和icon-64.png:三種不同大小的表徵圖

 

參考連結

 動作按鈕: https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action
 面板: https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/panel 
 切換按鈕: https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_toggle 

 

 

本站文章為 寶寶巴士 SD.Team 原創,轉載務必在明顯處註明:(作者官方網站: 寶寶巴士 ) 
轉載自【寶寶巴士SuperDo團隊】 原文連結: http://www.cnblogs.com/superdo/p/4843217.html

 

 

[Firefox附加組件]0003.彈出對話方塊

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.