1

我正在尝试使用greasemonkey更改网址和单词

例子 :

<a href="http://www.rapid%2Ashare.com/" target="_blank">www.rapid*share.com</a>
<a href="http://www.*Forbidden*/" target="_blank">www.*Forbidden*</a>

*Forbidden*

我想换词

  • 快速*分享到快速分享
  • *禁止*到 mediafire.com
  • *禁止*到narutopedia

用户脚本:

    var words = {  

    "rapid*share":"rapidshare",
    "*Forbidden*":"www.mediafire.com",
    "*Forbidden*":"narutopedia",

    "":""};


    // read
    String.prototype.prepareRegex = function() {
        return this.replace(/([\[\]\^\&\$\.\(\)\?\/\\\+\{\}\|])/g, "\\$1");
    };

    // tag
    function isOkTag(tag) {
        return (new RegExp("(," + tag + ",) | (," + tag + "$)", "g").test(",pre,blockquote,code,input,button,textarea")) == false;
    }

    // convert word
    var regexs=new Array(),
        replacements=new Array();
    for(var word in words) {
        if(word != "") {
            regexs.push(new RegExp(word.prepareRegex().replace(/(\\)?\*/g, function(e) {return ((e !== "\\*") ? "[^ ]*" : "*");}), "gi"));
            replacements.push(words[word]);
        }
    }

    //
    var texts = document.evaluate(".//text()[normalize-space(.)!='']",document.body,null,6,null), text="", len=regexs.length;
    for(var i=0,l=texts.snapshotLength; (this_text=texts.snapshotItem(i)); i++) {
        if(isOkTag(this_text.parentNode.tagName) && (text=this_text.textContent)) {
            for(var x=0; x<len; x++) text = this_text.textContent = text.replace(regexs[x], replacements[x]);
        }
    }


//replace url or link

    var links = document.links;
    var link;
    for(var i=links.length-1; i >=0; i--){
      link = links[i];
      link.href = link.href.replace("http://www.rapid*share.com", 'http://www.rapidshare.com');
      link.href = link.href.replace("http://www.zid*du.com", 'http://www.ziddu.com');
    }

输出,只改word不改url,禁止全部改narutopedia。

    <a href="http://www.rapid%2ashare.com/" target="_blank">www.rapidshare.com</a>
     <a href="http://www.*forbidden*/" target="_blank">narutopedia</a>
    <!-- text -->
    narutopedia

jsfiddle在这里

任何解决方案?谢谢

更改网址的解决方案

var url1,url2;
url1 = ['www.youtube.com','youtube.com', 'www.video.google.com', 'video.google.com', 'adbanner', 'advertisement', 'adserver', 'doubleclick'];
url2 = ['208.65.153.242','208.65.153.242', 'video.l.google.com', 'video.l.google.com', ' ', ' ',' ',' ' ]; 
var a, links;
var tmp="a";
var p,q;
links = document.getElementsByTagName('a');
for (var i = 0; i < links.length; i++) {
    a = links[i];
    for(var j=0;j<url1.length; j++)
    {
    tmp = a.href+"" ;
    if(tmp.indexOf(url1[j]) != -1)
    {
    p=tmp.indexOf(url1[j]) ;
    q="http://";
    q = q + url2[j] + tmp.substring(p+url1[j].length,tmp.length);
    a.href=q ;
    }
    }
    }
4

1 回答 1

1

换行

  link.href = link.href.replace("http://www.rapid*share.com", 'http://www.rapidshare.com');
  link.href = link.href.replace("http://www.zid*du.com", 'http://www.ziddu.com');

  link.href = link.href.replace("http://www.rapid%2Ashare.com", 'http://www.rapidshare.com');
  link.href = link.href.replace("http://www.zid%2Adu.com", 'http://www.ziddu.com');
于 2012-11-08T03:56:37.423 回答