如何从某些链接中删除javascript阻止?

时间:2013-04-21 05:59:03

标签: javascript greasemonkey tampermonkey

例如,我想改变这个:

<a href="javascript: void(null)" class="jv-redirectCandidate" 
    key="pcxe7gwP"
>Some Name</a>

进入这个:

<a href="https://www.foo.com/something.aspx?p=pcxe7gwP">Some Name</a>

我需要当前属于

的字符串“pcxe7gwP”
key="pcxe7gwp"

然后我想将它附加到网址的一部分

https://www.foo.com/something.aspx?p=

并用href代替当前的

"javascript: void(null)"

我正在使用Tampermonkey Chrome扩展程序并尝试创建用户脚本来完成此操作。我是用户的新手,非常乐意为您提供帮助。谢谢!

3 个答案:

答案 0 :(得分:0)

如果我理解正确,这就是你要找的东西:

<html>
<script type="text/javascript">
function changeHREF(element){
    element.href = "https://www.foo.com/something.aspx?p=" + element.key;
}
</script>
<body>
<a href="#" onclick="javascript:changeHREF(this);" class="jv-redirectCandidate" key="pcxe7gwP" id="myId">Some Name</a>
</body></html>

另一种可能的解决方案:

<html>
<script type="text/javascript">
function changeHREF(){
    elements = document.getElementsByClassName("jv-redirectCandidate");
    for(i = 0; i<elements.length; i++) {
        elements[i].href = "https://www.foo.com/something.aspx?p=" + elements[i].getAttribute("key");
    }
}
</script>
<body onload="javascript:changeHREF()">
<a href="javascript:void(null);" class="jv-redirectCandidate" key="pcxe7gwP">Some Name</a>
</body></html>

嗯,还有其他解决方案可以达到相同的效果。但是,我认为这不是主题。

干杯

答案 1 :(得分:0)

这是完整的脚本,可以在Tampermonkey或Greasemonkey中使用。它使用jQuery来轻松和有力:

// ==UserScript==
// @name     _De-javascript links
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @grant    GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
    introduced in GM 1.0.   It restores the sandbox.
*/
//-- Get links with the class "jv-redirectCandidate".
var linksToFix = $("a.jv-redirectCandidate");

//-- Loop through the links
linksToFix.each ( function () {
    var jThis   = $(this);  //-- An individual link
    var key     = jThis.attr ("key");

    jThis.attr ("href", "https://www.foo.com/something.aspx?p=" + key);
} );

答案 2 :(得分:0)

在Greasemonkey中测试,不需要jquery。

// ==UserScript==
// @name        Change link href with it's key
// @namespace   test
// @grant       none
// @version     1
// @include     http://localhost:8000/*.html
// ==/UserScript==

var prefix = 'https://www.foo.com/something.aspx?p=';
var links = document.querySelectorAll('a.jv-redirectCandidate[key]');
for (var i = 0; i < links.length; i += 1) {
    var link = links[i];
    link.href = prefix + link.getAttribute('key');
}