MozTW 討論區 https://forum.moztw.org/ |
|
簡單的greasemonkey script編寫問題 https://forum.moztw.org/viewtopic.php?f=11&t=27445 |
第 1 頁 (共 1 頁) |
發表人: | ovo [ 2009-07-18, 12:19 ] |
文章主題 : | 簡單的greasemonkey script編寫問題 |
如何將圖片連結前加入proxy。 例如: <img src="http://www123.pic.com/1.jpg> <img src="http://www99.pic.com/2.jpg> 變成: <img src="http://www.proxy.com/proxy.php?u=http://www123.pic.com/1.jpg> <img src="http://www.proxy.com/proxy.php?u=http://www99.pic.com/2.jpg> www後的那些數字是隨意的(1到3個位),不是必然的123或99,即是:[0-9]{1,3}。 煩請幫忙,謝謝!:) |
發表人: | shyangs [ 2009-07-18, 19:13 ] |
文章主題 : | |
我想你應該會用吧?直接上原始碼,不存成.user.js上傳了。 代碼: // ==UserScript==
// @author Shyangs // @name 圖片連結前加入proxy // @description 圖片連結前加入http://www.proxy.com/proxy.php?u= // @namespace http://wiki.moztw.org/index.php/User:Shyangs // @version 0.1 // @include http://*.pic.com/* // ==/UserScript== //套用的網站請修改 @include (function() { var ImgsNum=document.images.length;//圖片計數 //圖片連結前加入http://www.proxy.com/proxy.php?u= for(var i=0;i<ImgsNum;i++) { document.images[i].src="http://www.proxy.com/proxy.php?u="+document.images[i].src; } })(); |
發表人: | ovo [ 2009-07-18, 23:23 ] |
文章主題 : | |
先謝謝你的回覆,但不好意思,我說得不清楚,可能使你誤會了。 我希望的是:先把www###.pic.com找出來,然後才加上proxy,不是把所的img tag的src都加上去(因為很多時只有一部份的圖片是這樣的); 另外有些時候,它不一定是圖片,有可能只是普通的連結,或者只是文字,那又該如何處理呢? 最後,順帶一問:那些online proxy,不一定"http://www.proxy.com/proxy.php?u=http://www123.pic.com/1.jpg"這形式, 也有可能是"http://www.proxy.com/http/www123.pic.com/1.jpg"這樣子的,所以可以的話,麻煩兩個版本的script也給我,行嗎?謝謝! |
發表人: | shyangs [ 2009-07-19, 13:26 ] |
文章主題 : | |
版本一 - 圖片 代碼: (function() { var pStr="http://www.proxy.com/proxy.php?u="; //建立正則,匹配http://www『1~3位數字』.pic.com/『至少一個英、數、_字元』.jpg var regex=/http:\/\/www[0-9]{1,3}\.pic\.com\/\w+\.jpg/; var a=document.images; var n=a.length;//圖片計數 for(var i=0;i<n;i++) { //如果圖片連結匹配,圖片連結前加入pStr if(regex.test(a[i].src)) { a[i].src=pStr+a[i].src; } } })(); 版本一 - 連結 代碼: (function() { var pStr="http://www.proxy.com/proxy.php?u="; //建立正則,匹配http://www『1~3位數字』.pic.com/『至少一個英、數、_字元』.jpg var regex=/http:\/\/www[0-9]{1,3}\.pic\.com\/\w+\.jpg/; var a=document.getElementsByTagName("a"); var n=a.length;//連結計數 for(var i=0;i<n;i++) { //如果連結匹配,連結前加入pStr if(regex.test(a[i].href)) { a[i].href=pStr+a[i].href; } } })(); 版本二 - 圖片 代碼: (function() { var pStr="http://www.proxy.com/http/"; //建立正則,匹配http://www『1~3位數字』.pic.com/『至少一個英、數、_字元』.jpg var regex=/http:\/\/www[0-9]{1,3}\.pic\.com\/\w+\.jpg/; var a=document.images; var n=a.length;//圖片計數 for(var i=0;i<n;i++) { //如果圖片連結匹配,置換圖片連結 if(regex.test(a[i].src)) { a[i].src=a[i].src.replace("http://",pStr); } } })(); 版本二 - 連結 代碼: (function() { var pStr="http://www.proxy.com/http/"; //建立正則,匹配http://www『1~3位數字』.pic.com/『至少一個英、數、_字元』.jpg var regex=/http:\/\/www[0-9]{1,3}\.pic\.com\/\w+\.jpg/; var a=document.getElementsByTagName("a"); var n=a.length;//連結計數 for(var i=0;i<n;i++) { //如果連結匹配,置換連結 if(regex.test(a[i].href)) { a[i].href=a[i].href.replace("http://",pStr); } } })(); 版本一 - 純文字 代碼: (function() { var pStr="http://www.proxy.com/proxy.php?u="; //建立正則,匹配http://www『1~3位數字』.pic.com/『至少一個英、數、_字元』(非貪婪).jpg//g全部 var regex=/(http:\/\/www[0-9]{1,3}\.pic\.com\/\w+?\.jpg)/g; var a=[]; //Node.TextNodeArray function tna(o) { var o=o.childNodes; var n=o.length; for (var i=0;i<n;i++) { if(!!o[i]&&o[i].nodeType===3)//存在且為文字節點 { a.push(o[i]); } else if (o[i].childNodes)//是否undefined { tna(o[i]); } } return a; }; var text=tna(document.body);//body底下的所有文字節點 var n=a.length;//計數 for(var i=0;i<n;i++) { if(regex.test(text[i].nodeValue)) { //置換 text[i].nodeValue=text[i].nodeValue.replace(regex,pStr+"$1"); } } })(); 版本二 - 純文字 代碼: (function() {
var pStr="http://www.proxy.com/http/"; //建立正則,匹配http://www『1~3位數字』.pic.com/『至少一個英、數、_字元』(非貪婪).jpg//g全部 var regex=/http:\/\/(www[0-9]{1,3}\.pic\.com\/\w+?\.jpg)/g; var a=[]; //Node.TextNodeArray function tna(o) { var o=o.childNodes; var n=o.length; for (var i=0;i<n;i++) { if(!!o[i]&&o[i].nodeType===3)//存在且為文字節點 { a.push(o[i]); } else if (o[i].childNodes)//是否undefined { tna(o[i]); } } return a; }; var text=tna(document.body);//body底下的所有文字節點 var n=a.length;//計數 for(var i=0;i<n;i++) { if(regex.test(text[i].nodeValue)) { //置換 text[i].nodeValue=text[i].nodeValue.replace(regex,pStr+"$1"); } } })(); |
發表人: | ovo [ 2009-07-19, 14:10 ] |
文章主題 : | |
行了,非常感謝,解答得十分詳細,有勞了。 ![]() |
第 1 頁 (共 1 頁) | 所有顯示的時間為 UTC + 8 小時 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |