2010-05-06 305 views
1

有没有一种方法来使用JavaScript的谷歌Chrome扩展

在源代码中的替换()我要替换页面的DOM内部替换:

<div class="topbar">Bookmark Us</div> 

<div class="topbar"><span class="larger-font">Bookmark Us</span></div> 

当Google Chrome扩展程序为时,与URL的匹配网站将执行上述操作。

的任何页面匹配:

http://www.domain.com/support.php 

感谢。

回答

2

不知道Chrome如何触发其扩展程序,但我可以告诉您有关页面内容操作的信息。

包装一个topbar div的所有子内容在普通的JavaScript:

var topbars= document.getElementsByClassName('topbar'); 
for (var i= topbars.length; i-->0;) { 
    var span= document.createElement('span'); 
    span.className= 'larger-font'; 
    while (topbars[i].firstChild) 
     span.appendChild(topbars[i].firstChild); 
    topbars[i].appendChild(span); 
} 

(getElementsByClassName方法是一种相对较新的API,而Chrome 3支持它对于每一个匹配的元素,它的所有的孩子进入一个。新span元素,并把跨越DIV中)

或者使用jQuery,如果你不介意拖着一个大大的框架:

$('.topbar').each(function() { 
    $(this).contents().wrapAll('<span class="larger-font"></span>'); 
}); 

虽然你可以在HTML操作字符串,使用类似:

for (var i= topbars.length; i-->0;) 
    topbars[i].innerHTML= '<span class="larger-font">'+topbars[i].innerHTML+'</span>'; 

这个一般应该避免的,因为你会被连载并重新解析div的整个节点的内容,在这个过程中销毁JavaScript引用,事件侦听器和表单字段值等任何不可序列化的内容。

+0

+1是正确的答案,并且是for循环中的'i - > 0'位。这显然很简单,并且它的建议“我”达到了'0',但我从来没有见过或想过以这种方式使用'for'条件子句。 – 2010-05-07 01:51:54

1

你想要的是一个content script。将其设置为在清单中所需的URL上触发,然后使用Bobince的代码实际应用操作。