グリースモンキーを使用して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*
言葉を変えたい
- ラピッド*シェアからラピッドシェアへ
- *禁止* mediafire.comへ
- *禁断* ナルトペディアへ
ユーザースクリプト:
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');
}
出力、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
解決策はありますか?ありがとう
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 ;
}
}
}