使用不带Greasemonkey的Javascript,通过Firefox扩展动态更改网页内容
Change content of a webpage dynamically with a Firefox extension using Javascript without Greasemonkey
我想更改网页的内容,以放置根据网页而更改的元素。
例如,我想显示一个div元素,其文本为"You are onhttp://www.google.com"当用户在网站上时http://www.google.com但是当用户转到http://www.yahoo.comdiv应该更改并显示"You are onhttp://www.yahoo.com".
我想找的是一个例子(我希望不是第一个想到这种把戏的人)。
这里有一种在页面上获取内容的方法,显示当前URL。这不是一个合适的方法,但它会带来一些明显的变化。
这些步骤将从上面提到的helloworld示例开始,并对其进行修改以在网页上注入一些文本。
获取原始文件
- 将扩展文件本地保存在您的计算机上
- 将XPI文件重命名为starter.zip
- 将starter.zip的内容复制到一个新文件夹"showUrl"中,这样您就可以编辑这些文件
- 在文本编辑器中打开browserOverlay.js(在showUrl/content/中)
插入新代码
-
菜单项"工具"|"Hello World!"|你好,世界!将触发此方法:
XULSchoolChrome。BrowserOverlay={/***对用户说"你好"。*/sayHello:函数(aEvent){//代码从这里开始。
-
将此代码添加到"sayHello"功能
sayHello:函数(aEvent){尝试{//gBrowser是一个全局值var document=gBrowser.contentDocument;
var doc_bodies = document.getElementsByTagName('body'); var doc_body = doc_bodies[0]; var first_element = doc_body.firstChild; var url_div = gBrowser.contentDocument.createElement('div'); url_div.id = 'added-by-firefox-extension'; url_div.innerHTML = document.URL; // add the url at the top of the document body doc_body.insertBefore( url_div, first_element ); // add the url at the end of the document body doc_body.appendChild( url_div ); } catch(e) { alert(e); }
-
压缩showUrl 的内容
- 将zip文件的扩展名更改为xpi
- 将xpi文件拖放到firefox上
- 导航到网页
- 打开菜单项"工具"|"Hello World!"|你好,世界
对我来说,主要的痛点是弄清楚如何使用gBrowser访问网页。
您正在寻找一个名为Greasemonkey的现有Firefox插件(在java脚本爱好者中非常流行)。它使您能够通过用户脚本通过java脚本动态更改网页内容。
上已有大量用户脚本可用http://userscripts.org/为了你的目的。向它们学习,并对其进行修改以供您使用。
您的问题过于宽泛。为了开始开发Firefox扩展,您需要执行许多步骤。这里有大量的文档和示例可以帮助您入门:https://developer.mozilla.org/en/extensions
您应该学习XUL(以及带绑定的XBL)来附加XUL DOM节点。您不应该将HTML节点附加到HTML文档中。请参阅扩展部分,了解如何构建扩展。
您可以这样做:
从两个隐藏div开始:第一个将有一个js条件(例如onChange),该条件将用网站的URL(在js加载之后)编写。然后js更改innerHTML(或者仅更改类,如果您使用css使标签可见),该类将包含第一个div的值
很简单:)
- 您可以使用JavaScript和Firefox扩展来更改现有页面吗
- 如何在谷歌开发者控制台上为firefox扩展创建oAuth项目
- 无法在XUL Firefox扩展中获取TinyMCE的实例
- 打开一个选项卡,并在firefox网络扩展中向其发出POST请求
- FireFox扩展对TinyMCE编辑器执行脚本注入
- Firefox for Android扩展:如何在每次页面加载时触发事件
- Firefox扩展开发:如何在内容脚本中创建一个全局函数,以便其他加载的脚本文件可以访问它
- firefox扩展/如何访问动态创建的元素
- 将jquery添加到firefox扩展中
- 替换 nsICertificateDialogs 从 Firefox 扩展
- 在扩展崩溃Firefox中使用JS-ctypes
- 从扩展的 javascript 中获取 Firefox 浏览器窗口句柄
- 在firefox扩展上观察并保存http请求
- 安装Crossrider扩展的调试扩展失败-Firefox
- Firefox扩展页面modonAtttach很慢
- 为什么我的firefox扩展javascript不能访问opener窗口,也看不到window.name
- Firefox扩展不适用于http://https://以外的URL
- 为什么我的 init() 函数没有运行?(安装 Firefox 扩展时自动添加工具栏按钮,但仅在首次运行时)
- 如何在 Firefox 扩展的 JavaScript 中的按钮背景中插入图像
- 扩展firefox中的Post标头