繁体   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