Loading.. Current Page is Loading.

Firefox Add-on - 同时修改多个Tab的页面内容

9. February 2010

很早以前我写过一篇文章关于如何在Firefox开发修改当前页面的内容,但是那篇文章的适用场景在于修改当前页面的Tab下的内容,也就是说,如果你打开多个Tab,同时刷新,只有当前的HTML会被改变,好在那篇文章是讲解如何使用鼠标选择相应的范围更改相应的HTML,如果在那个需求下,则现在的这个就不适用了。

我现在就说说如何在Firefox里面修改多个Tab的页面内容吧。

首先在加载Firefox插件的时候,我们可以给每个Tab的对象加上DomContentLoaded事件响应,并且给真正响应的部分添加事件。

//在onload方法写入下面的事件
gBrowser.addEventListener("DOMContentLoaded",function(event)
{
    
//Firefox下面的appcontent
    var appcontent = document.getElementById("appcontent");
    
    //获得之后就可以为真正的响应部分添加事件
    if(appcontent)
    {
        appcontent.addEventListener(
"DOMContentLoaded", function(event){pageLoad(event);}, true);
    }
} ,
false);

在获得响应的响应事件之后,我们就需要在pageLoad方法中获取相应的Tab的document对象。这里值得一提的是,在Firefox的document对象中,默认是拿的XUL的document,而不是frame的document。虽然我们可以通过window.content.document或者content.document拿到对象,但是这个地方拿到的仅仅是当前窗口,也就是当前Tab的,如果我们要在所有的Tab加载完毕之后自动的更改内容,就需要拿到每一个document。

我们可以更改pageLoad代码如下。

function pageLoad(event)
{
    
var doc = event.originalTarget;
    
if(doc.nodeName != "#document" || !doc.location)
    {
        
return;
    }

    
//doc is document object
    //doc.getElementById("someid")
    //doc.appendChild(someChild)
}

通过上面的代码我们就拿到了每一个Tab的document对象,拿到之后,我们就可以在相应的方法中使用相应的document更改对应的Tab里的HTML了。

Firefox Addon , , , , , ,

Comments

Add comment


(Will show your Gravatar icon)  

(Match case,A is not a!)
  Country flag

biuqbr
  • Comment
  • Preview
Loading



About me

Hello,欢迎来到我的博客,我叫郭靖(但不是大侠),我是一个程序员,现居北京,同时我还爱好设计和前端开发。
jguoer.comshangducms.com都在使用,还可以通过前缀dxwt访问电信和网通线路。:)

Suggest Articles

Loading..
感谢风云互联提供免费稳定优质的企业级主机 京ICP备09081424号 Best view on Mac OS X