2014-11-06 63 views
0

我正在尋找一種方式來在用戶想要更改頁面時重寫位置的URL。所以,讓我們說,你有這樣的事情:在位置更改上重寫URL

<body> 
    <a href="http://example.com" /> 
</body> 

有沒有一種方法可以讓我趕上URL變化的時刻,位置改變之前實際修改URL,比如我想HREF變成像相對鏈接\http://example.com和實際在那裏重定向頁面。

回答

1

如果你只是想陷阱的鏈接,然後修改它,然後是的,這很簡單...

$("a").on("click", function(e) { 
    e.preventDefault(); // stops the link doing its default thing 
    window.location.href = "something/" + $(this).attr("href"); 
}); 

你顯然需要修改的位置發生變化的線條,使得它修改HREF價值,但你需要。我還建議給鏈接一個類並選擇它們,因爲上面的代碼會影響頁面上的每個鏈接。

最後,這將需要在DOM加載後運行,因此要麼將它包裝在您選擇的document.ready處理程序中,要麼將其放在主體底部的腳本中。

+0

對不起,我不清楚。我實際上需要檢測document.location何時發生更改,其中不僅包括元素,還包括手動javascript。 onbeforeunload事件處理程序將檢測位置變化,但我不知道如何獲取它應該去的URL,你有什麼想法嗎? – Zed 2014-11-06 12:02:25

+0

在這種情況下,沒有。我不知道有什麼方法(使用Javascript)每次都沒有確認框改變目標URL(使用onbeforeunload)。 – Archer 2014-11-06 12:10:53

+0

似乎無法完成。無論如何,謝謝你,這段代碼也會幫助我。 – Zed 2014-11-06 12:12:23

0

Demo

您可以從這裏工作。此外,您需要在htaccess中使用urlrewrite才能正常工作。

$(function() { 
    $('.buttonn').on('click', function (e) { 
     var seperator = (window.location.href.indexOf("?") === -1) ? "?" : "&"; 
     if (window.location.href.indexOf("s1") === -1 && window.location.href.indexOf("s2") != -1) { 
      window.location.href = window.location.href.replace(/&?s2=([^&]$|[^&]*)/i, "&s1=s1"); 
     } else if (window.location.href.indexOf("s1") != -1) { 
      window.location.href = window.location.href.replace(/&?s1=([^&]$|[^&]*)/i, "&s1=s1"); 
     } else { 

      window.location.href = window.location.href + seperator + "s1=s1"; 
     } 
    }); 

}); 

$(function() { 
    $('.buttono').on('click', function (e) { 
     var seperator = (window.location.href.indexOf("?") === -1) ? "?" : "&"; 
     if (window.location.href.indexOf("s2") === -1 && window.location.href.indexOf("s1") != -1) { 
      window.location.href = window.location.href.replace(/&?s1=([^&]$|[^&]*)/i, "&s2=s2"); 
     } else if (window.location.href.indexOf("s2") != -1) { 
      window.location.href = window.location.href.replace(/&?s2=([^&]$|[^&]*)/i, "&s2=s2"); 
     } else { 
      window.location.href = window.location.href + seperator + "s2=s2"; 
     } 
    }); 
});