我不知道我在找哪一個主題,但這裏有我想要實現的描述:調用JavaScript函數時,網址變更
- 當URL變化,JavaScript方法應該被調用而不是嘗試加載該URL的頁面。
我試圖做到這一點的原因是因爲對於搜索引擎優化的目的,我需要使用分段的網址。但是,我還試圖使用預裝的HTML模板即時創建「新頁面」。因此,我不想加載新頁面,而只是調用將使用模板呈現頁面的關聯方法。
這種行爲可行嗎?
注意:我認爲值得一提的是現有系統當前使用URL散列來檢測是否會加載新頁面。
問候,
歐文
我不知道我在找哪一個主題,但這裏有我想要實現的描述:調用JavaScript函數時,網址變更
我試圖做到這一點的原因是因爲對於搜索引擎優化的目的,我需要使用分段的網址。但是,我還試圖使用預裝的HTML模板即時創建「新頁面」。因此,我不想加載新頁面,而只是調用將使用模板呈現頁面的關聯方法。
這種行爲可行嗎?
注意:我認爲值得一提的是現有系統當前使用URL散列來檢測是否會加載新頁面。
問候,
歐文
你需要點擊處理程序附加到您阻止默認動作,做您的重定向的所有鏈接。與jQuery,這可以這麼簡單:
$(document).ready(function() {
$('a').on('click', function() {
$(location).attr('href','your_url'); // redirect wherever you want to go
return false;
});
});
我最近做了類似的事情。
假設我理解你以後,下面是哈希變化執行的函數
var last_hash = "";
setInterval(function(){
hash = window.location.hash;
if(last_hash != hash && hash.length != 1){
hash = hash.substring(1)
//Making sure that there's actually a function with that name
if(typeof window[hash] == 'function'){
var fn = window[hash];
//Execute the function
fn.apply({param: "param1"}, ["param1", "param2"]);
}
last_hash = window.location.hash;
}
}, 250);
您可以通過分離函數名和參數,然後加入幹散的一些額外的解析監聽所有參數傳遞給數組以傳遞給.apply
,但我將這部分留給你。
如果您使用的是實際的URL而不是散列,請確保您阻止頁面上鍊接的默認行爲,以及之後您隨後加載的任何鏈接。
function attach_disablelinks(){
$("a").on("click", function(e){
e.preventDefault();
});
}