使用不带Greasemonkey的Javascript,使用Firefox扩展动态更改网页内容

时间:2011-06-28 09:05:36

标签: javascript firefox webpage

我想更改网页的内容,以根据网页添加更改的元素。

e.g。当用户访问网站http://www.google.com时,我想显示带有“你在http://www.google.com”文本的div元素,但当用户转到http://www.yahoo.com时,div应该更改并且显示“你在http://www.yahoo.com”。

我正在寻找的是某种开头的例子(我希望不是第一个想到这种技巧的人)。

5 个答案:

答案 0 :(得分:2)

这是在页面上获取内容的一种方法,以显示当前的URL。这不是正确的方法,但它会从一开始就给出一些明显的改变。

这些步骤将从上面提到的hello world example开始,并修改它以在网页上注入一些文字。

获取原始文件

  1. 在您的计算机上本地保存extension file
  2. 将XPI文件重命名为starter.zip
  3. 将starter.zip的内容复制到新文件夹“showUrl”中,以便编辑文件。
  4. 在文本编辑器中打开browserOverlay.js(在showUrl / content /中)
  5. 插入新代码

    1. 菜单项工具|你好,世界! |你好,世界!将触发此方法:

      XULSchoolChrome.BrowserOverlay = {
          /**
           * Says 'Hello' to the user.
           */
          sayHello : function(aEvent) {
              // code starts here.
      
    2. 将此代码添加到“sayHello”函数

      sayHello : function(aEvent) {
          try
          {
              // gBrowser is a global value
              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);
      }
      
    3. 压缩showUrl的内容

    4. 将zip文件的扩展名更改为xpi
    5. 将xpi文件拖放到firefox
    6. 导航到网页
    7. 打开菜单项工具|你好,世界! | Hello World!
    8. 对我来说,主要的痛点在于弄清楚如何使用gBrowser来访问网页。

答案 1 :(得分:1)

您正在寻找一个名为 Greasemonkey 的现有Firefox插件(在java脚本极客中非常受欢迎)。它使您能够通过userscripts通过java脚本动态更改网页内容。

http://userscripts.org/有许多用户脚本可供您使用。向他们学习并修改它以供您使用。

答案 2 :(得分:1)

你的问题过于宽泛。为了开始开发Firefox扩展,您需要执行许多步骤。有很多文档和示例可以帮助您入门:https://developer.mozilla.org/en/extensions

答案 3 :(得分:1)

您应该了解XULXBLbinding)以附加XUL-DOM-Nodes。您不应该将HTML节点附加到HTML文档。请参阅Extensions-section了解如何构建扩展程序。

答案 4 :(得分:0)

您可以这样做:

从两个隐藏div开始:第一个将具有js条件(例如onChange),该条件将使用站点的URL写入(在js加载之后)。然后js更改innerHTML(或者只有类,如果你使用css使make可见标签),它将包含第一个div的值。

这很简单:)