2012-06-04 73 views
-3

以下腳本將我的聯盟擴展添加到我的網頁上的每個網址。例如,如果http://www.Google.com/在我的頁面某處...將此腳本添加到頁面將自動更改網址 - http://adf.ly/xxxxxx/http://www.Google.com/ - 這適用於頁面上的每個網址...Javascript - 鏈接僞裝腳本需要修改

此腳本適用於網站在頁面上已經超鏈接,因爲鏈接文本保持不變,但目標網址現在有我的附屬機構擴展。

我的問題是...我怎麼能修改這個腳本,使原始網址(不超鏈接)仍然可以顯示爲原始網址,但與我的會員擴展添加到目的地?更好的是,我需要這個腳本來超鏈接頁面上的所有原始URL。我需要它,所以如果我的網頁上有原始網址http://www.Google.com,腳本會將目標更改爲http://adf.ly/xxxxxx/http://www.Google.com/ - 但查看者仍然只能看到http://www.Google.com

這個腳本再次和超鏈接一起工作,因爲它隻影響URL而不是鏈接文本。我只是需要它來掩蓋/掩蓋/超鏈接所有原始網址,這樣觀看者仍然可以看到原始網址目的地,而不是附帶我的附屬機構擴展程序的新網址。

謝謝你在前進, 這裏是例如HTML代碼:

<script type="text/javascript"> 
    onmousemove = function adfly() { 
     adfly_id = 'xxxxxx'; 
     for(var i = 0; i < document.links.length; i++) { 
      var hrefer = document.links[i].href; 
      if(hrefer.match("adf.ly") || hrefer.match("javascript:") || hrefer.match("#")) { 
       document.links[i].href = document.links[i].href; 
      } else { 
       document.links[i].href = 'http://adf.ly/' + adfly_id + '/' + document.links[i].href; 
      } 
     } 
    } 
</script> 
+1

如果是刪除那些惱人的現金製作者的腳本,我會更傾向於幫助您。 :)無論如何,你想要做什麼?每當用戶將鼠標懸停在鏈接上時,他總會看到狀態欄中的「adf.ly」地址(除非通過JS'function' /'var'做了一些掩飾)。我沒有看到你的腳本改變鏈接的顯示文字。 –

+0

如果用戶鼠標懸停,用戶會看到adf.ly目標,這並不是我的問題。 我需要完成的是爲原始網址成爲超鏈接。超鏈接文本是原始URL,超鏈接目標是新的附屬機構擴展URL。 我知道這可以很容易地通過手動切換所有我的原始URL到超鏈接來完成,但我需要這個自動完成。 和Fabricio,你怎麼可以用fuction/var修改腳本來隱藏mouseover上的URL? – Thomas

+0

編輯您的問題以包含更多的代碼和一些測試示例。在你的代碼示例中,我只能看到腳本改變'href'屬性,而不是鏈接的顯示文本。 –

回答

0

您可以通過做:

  1. 通過文本節點去(或者你感興趣的子集),找到包含URL regular expression的匹配項。
  2. 創建新的節點:
    • 文本部分
    • 錨/鏈接
  3. 插入這些新節點到DOM(刪除/取代了原來的文本節點)

這將是一個獨立於現有文檔的循環,它通過document.links。

最後但並非最不重要的是:要小心XSS vulnurabilities!

-3

下面的錨點標記在href屬性中顯示「google.fr」,但由於onclick,點擊鏈接會將您帶到那裏列出的網站。

<a title="google" href="http://google.fr/whatpeopleseeonrollover" onclick="this.href='http://yahoo.fr/wherepeoplegoforreal'">http://google.fr/whatpeoplethinktheygo</a>

你可以使用這樣的重定向頁面上的鏈接。

+2

你可以編輯這個,所以它更少txt-spk? – rene

+0

I 2nd @rene plz du ze編輯4 us。 – skuntsel

+1

這裏發佈的內容僅僅是解決方案的創意的開始,而不是完整的答案。是的,這個特殊的技巧是有效的,但你應該清除如何將其實施到OP的問題的細節。 – gunr2171