0

我在 Firefox 5 中安装了时尚和油脂猴子。我想知道它们中的任何一个或其他附加组件是否具有查找文本并将其替换为其他内容的能力,或者更好的是通过其 id 定位 div 并替换跨度在另一个文本字符串内。


来自 OP 评论:

我有一个带有divid=siteLinkList)的网站,在 div 中有一个ul和多个s。li

每个li都有一个a需要替换的 with 文本。我希望脚本搜索 div,然后在该 div 中查找和替换文本。

这是我到目前为止所拥有的:

var els = document.getElementsByTagName("*"); 

for(var i = 0, l = els.length; i < l; i++)
{
    var el = els[i]; 
    el.innerHTML = el.innerHTML.replace(/EGN1935: 5091, Summer B 2011/gi, 'Success'); 
    el.innerHTML = el.innerHTML.replace(/EGN1935: 5088, Summer B 2011/gi, 'Chemistry');
}    

该脚本有效,但我担心它会延迟加载时间。

4

2 回答 2

1

是的,Greasemonkey 可以做到这一点。(即使是 Stylish 也可以通过 CSS 以有限的方式做到这一点content。)

在userscripts.org上一定有无数的脚本可以做到这一点。

另请参阅相关的 SO 问题,例如:

您需要在之前和之后发布页面是/应该是什么的详细信息。


基于来自 OP 的更新的更具体的答案:

通过专注于你想要的元素类型来加速你的代码,AMAP,而不是获取每个元素。

像这样的代码应该可以工作。:

var TargLinks       = document.querySelectorAll ('div#siteLinkList ul li a');
for (var J = TargLinks.length - 1;  J >= 0;  --J)
{
    /*--- Does "EGN1935: 5088, Summer B 2011" only appear in the text of 
        the link or in the href?
        The first block will be more efficient if it works, otherwise use 
        the 2nd block.
    */
    var el          = TargLinks[J];
    el.textContent  = el.textContent.replace (/EGN1935: 5091, Summer B 2011/gi, 'Success'); 
    el.textContent  = el.textContent.replace (/EGN1935: 5088, Summer B 2011/gi, 'Chemistry');
    /* Only use this block if the first block did not work.
    el.innerHTML    = el.innerHTML.replace(/EGN1935: 5091, Summer B 2011/gi, 'Success'); 
    el.innerHTML    = el.innerHTML.replace(/EGN1935: 5088, Summer B 2011/gi, 'Chemistry');
    */
}
于 2011-06-29T01:52:31.730 回答
0

您可以使用 Firebug - http://getfirebug.com/来做到这一点。安装后,通过单击要编辑的页面上的错误外观图标来激活它。将出现 HTML 文档树的视图,您可以单击箭头进一步向下钻取。或者,您可以使用 Firebug 中的指针图标来选择页面上的任何 HTML 元素(例如具有特定 ID 的 div)。

选择元素后,您可以选择它包含的文本并根据需要进行编辑。

您可以使用此插件编辑大量其他内容,但重要的是要知道,一旦您重新加载页面,您的编辑就会消失。

于 2011-06-29T01:41:14.770 回答