2013-04-15 28 views
0

本質上,我有這個網站,其內容根據用戶輸入查詢字符串的內容而改變。如何修改此javascript以忽略查詢字符串中的任何數據?

當用戶進入mysite.com/?1它加載的內容爲1和/?2 2

我的問題是,我喜歡我的頁面中按鈕的Facebook,並使其工作,我有寫這個JS代碼:

<script type="text/javascript"> 
      var sUrl = window.location; 
       document.getElementById('fbcom').setAttribute('href', sUrl); 
    </script> 

這得到的URL,並允許用戶喜歡不同的內容從技術上是一個文件。

我的問題是,當用戶喜歡在Facebook上舉例/?1時,如果有人點擊他們的新聞推送鏈接並決定他們也喜歡,技術上他們會喜歡頁面/?所有額外的Facebook代碼在網址末尾,因此回到/?1之類的未註冊。

如何修改上述代碼,以便在從Facebook導向時忽略URL末尾的任何Facebook垃圾?

重要提示:ID /?1可以是1位到4位數之間的任意數,例如/?1234 我目前的JS能力非常差。由於

回答

1

你可以做到這一點與正則表達式:

var sUrl = window.location.toString().replace(/^(.*?)(\?.*)?$/, '$1'); 
+0

我已經使用.htaccess文件將網址從site.com/?1重寫爲site.com/1,我如何將這個實現爲同一個示例但沒有問號?對不起,我真的不明白你的代碼 – user2228313

+0

嗯..我的代碼是基於'?',它刪除了它後面的字符串的一部分!在應用你的.htaccess重寫規則之後,這個URL會變成「http://domain.com/test.php?user = user&data = data」? – razzak

+0

@ user2228313請注意,JavaScript會在瀏覽器看到它時看到該URL。如果你在'/?1'(查詢)服務器端和'/ 1'(路徑)客戶端之間重寫,JavaScript將只知道'/ 1'(路徑)。如果在客戶端看到「查詢」變體,那麼替換可以改變爲尋找'&',它應該將'1'從任何Facebook名稱/值中分離出來。 –

2

您可以組合properties of location你真的想保留 - 這似乎是,hostpathname

var sLoc = window.location; 
var sUrl = sLoc.protocol + '//' + sLoc.host + sLoc.pathname; 

你也可以只使用pathname作爲relative-from-root

var sUrl = window.location.pathname; 
相關問題