2013-03-06 102 views
1

我不知道我在找哪一個主題,但這裏有我想要實現的描述:調用JavaScript函數時,網址變更

  • 當URL變化,JavaScript方法應該被調用而不是嘗試加載該URL的頁面。

我試圖做到這一點的原因是因爲對於搜索引擎優化的目的,我需要使用分段的網址。但是,我還試圖使用預裝的HTML模板即時創建「新頁面」。因此,我不想加載新頁面,而只是調用將使用模板呈現頁面的關聯方法。

這種行爲可行嗎?

注意:我認爲值得一提的是現有系統當前使用URL散列來檢測是否會加載新頁面。

問候,

歐文

回答

0

你需要點擊處理程序附加到您阻止默認動作,做您的重定向的所有鏈接。與jQuery,這可以這麼簡單:

$(document).ready(function() { 
    $('a').on('click', function() { 
    $(location).attr('href','your_url'); // redirect wherever you want to go 
    return false; 
    });  
}); 
0

我最近做了類似的事情。
假設我理解你以後,下面是哈希變化執行的函數

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(); 
    }); 
}