Javascript 使用Greasemonkey更改链接和单词

Javascript 使用Greasemonkey更改链接和单词,javascript,greasemonkey,replace,Javascript,Greasemonkey,Replace,我正在尝试使用greasemonkey更改url和单词 示例: <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* var words = { "rapi

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

示例:

<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*
    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');
    }

*禁止的*
我想换个词

  • 快速*共享到rapidshare
  • *禁止*访问mediafire.com
  • *禁止进入火影忍者
用户脚本:

<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*
    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');
    }
var words={
“快速*共享”:“快速共享”,
“*禁止*”:“www.mediafire.com”,
“*禁止*”:“火影忍者”,
"":""};
//阅读
String.prototype.prepareRegex=函数(){
返回此。替换(/([\[\]\^\&\$\.\(\)\?\/\\\+\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
};
//标签
功能isOkTag(标签){
返回(newregexp(“(,“+tag+”,)|(,“+tag+”$),“g”)。测试(“,pre,blockquote,code,input,button,textarea”)==false;
}
//转换词
var regexs=新数组(),
替换=新数组();
for(字中的var字){
如果(单词!=“”){
push(新的RegExp(word.prepareRegex().replace(/(\\)?\*/g,函数(e){return((e!=“\\*”)?[^]*”:“*”),“gi”);
替换。推(字[字]);
}
}
//
var text=document.evaluate(“.//text()[规范化空格(.)!=””),document.body,null,6,null),text=“”,len=regexs.length;
对于(var i=0,l=text.snapshotLength;(this_text=text.snapshotItem(i));i++){
if(isOkTag(this_text.parentNode.tagName)&&(text=this_text.textContent)){
对于(变量x=0;x=0;i--){
链接=链接[i];
link.href=link.href.replace(“http://www.rapid*分享网“,”http://www.rapidshare.com');
link.href=link.href.replace(“http://www.zid*",http://www.ziddu.com');
}
输出,只更改单词而不更改url,禁止所有更改火影忍者

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

火影忍者
JSFIDLE

有解决办法吗? 谢谢

更改Url的解决方案

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 ;
    }
    }
    }
var url1、url2;
url1=['www.youtube.com','youtube.com','www.video.google.com','video.google.com','adbanner','advision','adserver','doubleclick'];
url2=['208.65.153.242','208.65.153.242','video.l.google.com','video.l.google.com','','','','';
var a,链接;
var tmp=“a”;
var p,q;
links=document.getElementsByTagName('a');
对于(变量i=0;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');

换行

  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');


再次用字符串“”替换第二行。请注意,将*更改为%2A,并将单词“禁止完成但不工作”中的小写字母“f”更改为url“”不更改为“似乎对我有用。我将鼠标悬停在rapidshare文本上,它会显示www.rapidshare.com。您可能链接了错误的fiddle。哪个链接?我已将此行更改为link.href=link.href.replace(“*share.com)”;更改为link.href=link.href.replace(“,”);请参阅,未工作注意结尾处的“gi”选项。这似乎可以在firefox中使用。link.href.replace(“,”);再次将第二行替换为字符串“”。请注意,将*更改为%2A,并将单词“禁止完成”中的小写“f”,但不工作请参见url“”不更改为“似乎对我有用。我将鼠标悬停在rapidshare文本上,它会显示www.rapidshare.com。您可能链接了错误的fiddle。哪个链接?我已将此行更改为link.href=link.href.replace(“*share.com)”;更改为link.href=link.href.replace(“,”);请参阅,未工作注意末尾的“gi”选项。这似乎使它在firefox.link.href.replace(“,”)中工作;