簡體   English   中英

Firefox XUL擴展在注入腳本中調用函數?

[英]Firefox XUL Extension Calls Function in Injected Script?

兩部分問題:

1)在進行XUL擴展時,如何將腳本(例如'library.js')注入HTML DOM?

2)我目前有一個工具欄按鈕,單擊該按鈕時我想在“ library.js”中調用一個函數。

這是我當前用於工具欄按鈕的XUL

<toolbarpalette id="BrowserToolbarPalette">
  <toolbarbutton id="myextension-button" 
    class="toolbarbutton-1"
    image="chrome://xulschoolhello/skin/favicon.png"
      oncommand="doStuff();"
    label="label" tooltiptext="tooltip" />
</toolbarpalette>

這是library.js(將注入到DOM中)。 Library.js將具有大量修改DOM的功能。 這是一個例子:

function changeTheDOM(){
     document.body.innerHTML = 'I changed it';
}

我希望doStuff()以某種方式調用HTML DOM中的function changeTheDOM()。 讓我知道這是否有意義。

對於所有這些不同的名稱空間/上下文,作為初學者的我來說很難理解如何在應用程序代碼和DOM之間進行交互。

使用者與我聯絡。 他們創建了覆蓋擴展程序。 因此,此解決方案與我在提交的其他解決方案中展示的引導演示不同,因為引導插件不支持chrome.manifest中的資源。 (需要“資源”,因為它可以被內容訪問,在引導程序中,您必須將chrome包設置為“ contentaccessible = true”)

blee908創建的測試插件的存儲庫為HERE @ GitHub

我分叉了這個插件,並進行了更新HERE @ GitHub 因此,當單擊此小部件時,它現在在選項卡中的當前網站上注入一個警報的“嘿”腳本。 (如果在安裝插件時看不到它,則必須自定義工具欄,然后從那里拖動到插件欄或工具欄)

如更新的插件的提交歷史所示,執行此操作需要三個步驟

  1. 創建test.js

    創建了一個文件夾,稍后將向資源展示該文件夾,並使用我要注入的代碼創建腳本文件

  2. 更新chrome.manifest

    從content / injectable /文件夾中創建資源,這樣,該文件夾中的所有內容都可以注入到站點中,而無“ Permission Security”例外。

  3. 更新browserOverlay.js

    我們在chrome.manifest文件中定義了包含腳本的文件夾的位置為“ resource:// xulschoolhello-injections /”,因此,讓它告訴它從中注入腳本文件。 我還編輯了被設置為“原始”的innerHTML。

此處的模板-_ff-addon-template-BootstrapWatchHostEventListenerInjectFiles顯示了如何通過在chrome.manifest文件中設置contentaccessible=true來注入文件。

安裝它,然后導航到bing.com並滾動到底部,您將看到帶有藍色背景和已注入圖像的注入iframe。 您還將看到在bing負載下運行注入腳本,這將是一個警報框。

但是上述模板存在問題,我無法將iframe的src設置為會引發此安全錯誤的chrome路徑:

安全錯誤: http ://www.bing.com/?FORM=Z9FD1上的內容可能無法加載或鏈接到chrome://bootstrap-watch-host-event-listener-inject-files/content/_inject-website.htm 。

這很奇怪,我聽不懂。 chrome.manifest中contentaccessible = true的重點是這樣,因此不會發生此安全錯誤。 其他開發人員在閱讀本文時請提供幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM