2012-04-22 38 views
2

我想將URL從「http://example.com/products/description/product123/index.html」更改爲「http:// example」。 COM/F123456 /產品/說明書/ product123/index.html的」。 對於每個來自特定網站的鏈接(只有一個),我需要像在示例中那樣更改鏈接基礎之後的代碼,然後繼續正常鏈接。Greasemonkey腳本自動修改具有特定ID值的URL

而且更具體,這裏就是我想用我的腳本來修改鏈接:我試過的東西,我發現http://www.f64.ro/http://www.f64.ro/f444618/的每一個環節,產品等

,但它不工作,我不知道什麼是錯的。

// ==UserScript== 
    // @name  F64.ro 
    // @include http://www.f64.ro/* 
    // ==/UserScript== 

    var targID  = "f444618/"; 
    var targLink = document.querySelector ("#" + targID); 
    targLink.href += targID + "\/"; 

謝謝!

+1

你知不知道這會影響只有你的瀏覽器?沒有人會受到它的影響。 – vascowhite 2012-04-22 11:13:57

+0

是的,我意識到這一點,但我只是希望能夠複製修改後的URL並將其粘貼到某個人或某個地方(如果可能),而不是修改每個鏈接的手動。謝謝你的答案。 – 2012-04-22 12:06:37

回答

6

在stackoverflow上也有類似的問題,例如How can you replace a link's target in Greasemonkey?

基於此,這裏是一個例子,它修改指向stackoverflow.com的所有鏈接到www.stackoverflow.com。

// ==UserScript== 
// @name   changeurl test 
// @namespace  https://stackoverflow.com/ 
// @description test for https://stackoverflow.com/q/10267423/33499 
// @include  https://stackoverflow.com/* 
// ==/UserScript== 

var links,thisLink; 
links = document.evaluate("//a[@href]", 
    document, 
    null, 
    XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, 
    null); 
for (var i=0;i<links.snapshotLength;i++) { 
    var thisLink = links.snapshotItem(i); 

    thisLink.href = thisLink.href.replace('https://stackoverflow.com/', 
              'http://www.stackoverflow.com/'); 
} 
+0

[XPath](https://developer.mozilla.org/en-US/docs/Introduction_to_using_XPath_in_JavaScript)是要走的路,儘管似乎沒有太多的想法進入它的發展...... – 2014-07-09 10:47:55

3

如果它是一個固定數量

// ==UserScript== 
// @name   TESTE 2 
// @namespace  TESTE 2 
// @description TESTE 2 
// @include  http*://*stackoverflow* 
// ==/UserScript== 

for (var i=0,link; (link=document.links[i]); i++) { 
    linkID = '/f444618' 
    link.href = link.href.replace(location.hostname, location.hostname+linkID); 
} 

如果數量從鏈路鏈路改變,只得到了ID爲當前的鏈接並更換linkID = 'f444618'