用于替换href的Greasemonkey脚本

时间:2015-04-18 19:28:47

标签: javascript greasemonkey

我的HTML看起来像这样

<a class="jx_ui_html_a" target="_blank" __jx__id="___$_2854__a"      href="https://www.kitty.com">
<div class="jx_ui_html_div path_title" __jx__id="___$_2854__path"></div>
</a>

和               

我正在尝试找到一个greasemonkey脚本,如果A类是jx_ui_html_a,它会将href部分从ANYTHING更改为https://www.dog.com 所以结果应该是

<a class="jx_ui_html_a" target="_blank" __jx__id="___$_2854__a" href="https://www.dog.com">
<div class="jx_ui_html_div path_title" __jx__id="___$_2854__path"></div>
</a>
分别

<a class="jx_ui_html_a" target="_blank" __jx__id="___$_28254__a" href="https://www.dog.com">
<div class="jx_ui_html_div path_title" __jx__id="___$_28254__path"></div>
</a>

你能以任何方式帮助我吗?

2 个答案:

答案 0 :(得分:2)

以下是两行代码 - 第一行查询DOM以查找所有a标记(document.querySelector('a')并将其转换为数组(通过将其作为参数传递给{{1} }),第二个在数组上运行forEach函数,该函数重新分配数组中每个DOM元素的[].slice.call属性。

href

没有forEach也是如此:

var anchors = [].slice.call(document.querySelectorAll('a');
anchors.forEach(function(element){
    element.href = "http://www.dog.com/"
});

要将var anchors = document.querySelectorAll('a'); for(var i=0;i<anchors.length;i++){ anchors[i].href = "http://www.dog.com"; } 的元素限制为仅具有特定类名的元素,请将其作为anchors参数的一部分提供:

querySelector

var anchors = document.querySelectorAll('a.jx_ui_html_a') querySelector选择元素的方式与渲染应用CSS规则的引擎相同。所以你可以传递像querySelectorAll这样的东西(将返回'a'元素,它们是'p'元素的直接后代),以及"p > a"(它将返回div内任何位置的span元素'容器'id)。

"div#container span"返回第一个匹配项,而querySelector返回所有匹配元素的类似数组的列表。

答案 1 :(得分:1)

首先,您想要require jQuery。 You can read about how to do that here.。安装完成后,您可以执行以下操作:

$(document).ready(function() {
  $('.jx_ui_html_a').attr('href','http://www.dog.com');
});

在英语中,这将等到页面完全加载($(document).ready()),搜索具有指定类($('.jx_ui_html_a'))的所有元素,并替换所有href属性使用您指定的网址。