2011-04-25 39 views
1

我做了一個書籤,用戶可以添加它,並將它們發送到我的網站捕獲引用。在超鏈接中使用Javascript獲取剪切字符串

<a href="javascript:location='http://www.chusmix.com/tests/?ref='+escape(location.href);" onclick="alert('Drag it, not click it!');return false;"> Bookmark </a> 

我的問題是,由於某種原因location.href部分而不是打印http://它打印:「http%3A //」。我想刪除它,並得到只是domain.com

我有一個類似的代碼,可能會很有用,但我很難搞清楚如何在HTML中實現它。

// Function to clean url 

    function cleanURL(url) 
    { 
     if(url.match(/http:\/\//)) 
     { 
      url = url.substring(7); 
     } 
     if(url.match(/^www\./)) 
     { 
      url = url.substring(4); 
     } 

     url = "www.chusmix.com/tests/?ref=www." + url; 

     return url; 
    } 
    </script> 

由於

+0

請不要做這個。沒有冒犯性,但是如果用戶將這個鏈接拖到他的瀏覽器工具欄作爲書籤,這會產生間諜軟件。 ''location.href''''''''''''''''''''''''''''''''''''''''''''''''''''''他正在查看的**頁面將被髮送,這很可能是**不是與他爲您的某個網頁添加書籤時的相同頁面。 – 2011-04-25 23:27:43

+0

我沒有存儲它或任何東西,我只需要知道他來自哪裏,因爲將顯示什麼取決於他來自哪裏。 – lisovaccaro 2011-04-26 00:05:32

+0

我需要發送他當前正在查看的頁面,而不是他創建書籤的頁面。可以使用location.ref和轉義引起我的問​​題?什麼是適當的方法來做到這一點? – lisovaccaro 2011-04-26 00:07:18

回答

0

就像在我的評論已經指出:

注意,這種書籤的可能會損害用戶的隱私,所以請相應地通知他們。

話雖這麼說:

首先,請使用encodeURIComponent()代替escape(),因爲escape()是因爲ECMAScript-262 V3棄用。

其次,要擺脫的 「http%3A //」 做使用location.href的,但組裝location性能hostpathnamesearchhash代替:

encodeURIComponent(location.host + location.pathname + location.search + location.hash); 
1

在大多數瀏覽器,引薦被髮送作爲HTTP協議的標準字段。這在技術上不是你的問題的答案,但它將是一個更清潔和不太明顯的解決方案來抓取服務器端的信息。

在PHP中,例如,你可以寫:

$ref = $_SERVER['HTTP_REFERER']; 

...然後存儲在一個文本文件或數據庫或什麼都有,你。我無法確切知道您的最終目的是什麼,因爲點擊書籤缺乏瀏覽器的連續性,導致需要引用者信息(如從搜索引擎或競爭對手的網站移動的方式)。他們可能來自零歷史記錄,來自您網站上的另一個頁面或完全不相關的內容。