标签: userscripts

JavaScript 正则表达式替换网页中的可见文本

我希望将名为“mylist”的 .json 列表中的字符串与仅在任何网页上出现的可见字符串进行匹配。匹配的字符串将被替换为下面脚本中的术语“ REPLACED! ”。

最重要的是脚本应该在现代浏览器上运行并且不会降低页面加载性能。所以我很感激任何优化建议!

这是我到目前为止所得到的:

@resource      mylist https://example.com/mylist.json

(function(){
var mylist = JSON.parse(GM_getResourceText("mylist"));
var regexp = new RegExp('\\b(' + mylist.join('|') + ')\\b(?!\\)\\))', "gi");
 
function walk(node) {
    var child, next;
 
    switch ( node.nodeType )
    {
        case 1:
        case 9:
        case 11:
            child = node.firstChild;
            while ( child )
            {
                next = child.nextSibling;
                walk(child);
                child = next;
            }
            break;
 
        case 3:
            handleText(node);
            break;
    }
}
 
function handleText(textNode) {
    textNode.nodeValue = textNode.nodeValue.replace(regexp, 'REPLACED!');
}
 
walk(document.body);
})();
Run Code Online (Sandbox Code Playgroud)

我在这里制作了一个示例: https: //jsfiddle.net/xgnocwbq/ …

javascript regex json replace userscripts

0
推荐指数
1
解决办法
168
查看次数

使用DOM nextSibling

我正在为具有此HTML代码块的页面编写用户脚本.

<span id="mediaSetUfiLikeLink">
    <button class="like_link stat_elem as_link" title="Like this item" type="submit" name="like">
        <span class="default_message">Like</span>
        <span class="saving_message">Unlike</span>
    </button>
</span>

<span>
    <a href="/ajax/sharer/?s=3&appid=2305272732&p[]=1012781954&p[]=2063763" rel="dialog">Share</a>
</span>
Run Code Online (Sandbox Code Playgroud)

我需要id最后一个 span块中添加一个标签.(下面一个)

<span>
    <a href="/ajax/sharer/?s=3&appid=2305272732&p[]=1012781954&p[]=2063763" rel="dialog">Share</a>
</span>
Run Code Online (Sandbox Code Playgroud)

我已经到了这一点使用这个,

document.getElementById("mediaSetUfiLikeLink").getElementsByTagName("span")[1];
Run Code Online (Sandbox Code Playgroud)

我尝试了这样的最后一次span使用nextSibling,返回了null

document.getElementById("mediaSetUfiLikeLink").getElementsByTagName("span")[1].nextSibling;
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题吗?为了再次清楚,我想'获得'访问最后一个span块,以便我可以id为它添加一个属性..

PS - 我需要在使用jQuery或任何其他外部库的情况下执行此操作.仅限纯JavaScript.

谢谢

html javascript dom userscripts

-1
推荐指数
2
解决办法
4551
查看次数

更改每个实例的颜色

我在网站上有很多颜色,我想用usercript更改.想象一下包含1000个不同选择器的CSS文件,每个选择器都有一个颜色.那种特定的颜色是我想要改变的.该颜色的每个实例.用户必须能够动态更改颜色(如使用输入框)​​,因此使用CSS文件更改它将不起作用.

如果它有效,那么我将如何做到这一点:

$("*").replace("#00aba0","#FF0000");
Run Code Online (Sandbox Code Playgroud)

00aba0是我要用FF0000替换的颜色

不幸的是,该方法不可用,但它可以像这样工作.另外,设置一个循环来做string.replace(); 不会起作用,因为它是一个论坛,当你做出新的回复时,它会删除回复框中的文字.

总结一下:

我想用另一种颜色替换颜色的每个实例.有许多实例(比方说500)这种颜色,必须改变.我无法通过替换CSS文件来更改它,并且必须动态更改它.

javascript css jquery userscripts

-1
推荐指数
1
解决办法
4199
查看次数

可以将此书签转换为Greasemonkey用户脚本吗?

我不太确定如何将此代码从小书签转换为用户脚本,因为它使用URL编码的字符:

javascript:var%20multiURL="";%20$('div.titlebox').find('ul.subreddits').find('a').each(function()%20{%20multiURL%20+=%20$(this).text().substr(3)%20+%20"+";%20});%20multiURL%20=%20multiURL.substr(0,multiURL.length-1);%20window.open('http://www.reddit.com/r/'+multiURL);void(0);
Run Code Online (Sandbox Code Playgroud)

有想法吗?

javascript bookmarklet userscripts

-3
推荐指数
1
解决办法
120
查看次数

标签 统计

javascript ×4

userscripts ×4

bookmarklet ×1

css ×1

dom ×1

html ×1

jquery ×1

json ×1

regex ×1

replace ×1