URL更改时调用javascript函数

时间:2013-03-06 09:13:48

标签: javascript url

我不确定我在寻找哪个主题,但这里是对我要实现的目标的描述:

  • 当网址发生变化时,应调用javascript方法,而不是尝试加载该网址页面。

我试图这样做的原因是因为出于搜索引擎优化的目的,我需要使用分段URL。但是,我还尝试使用预加载的HTML模板即时创建“新页面”。因此,我只想调用相关的方法来代替加载新页面,该方法将使用模板呈现页面。

这种行为可能吗?

注意:我认为值得一提的是,现有系统目前使用URL哈希来检测是否会加载新页面。

此致

欧文

2 个答案:

答案 0 :(得分:0)

您需要将单击处理程序附加到阻止默认操作并执行重定向的所有链接。使用jQuery,这可以很简单:

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

答案 1 :(得分: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,但我将该部分留给您。 / p>

如果您使用的是实际网址而不是哈希,请确保阻止网页上链接的默认行为以及随后加载的所有链接。

function attach_disablelinks(){
    $("a").on("click", function(e){
        e.preventDefault();
    });
}