更改URL后执行某些操作

时间:2015-03-03 10:28:03

标签: javascript jquery

我使用javascript加载我想要的路径,我想在更改网址后做一些代码。这是我的简单代码。

$(".addfr").click(function(){
    var pathname = window.location.pathname;

    if ((pathname == "/index.php") || (pathname == "/")) {
        $( "#tabbtn3" ).trigger( "click" );
        $('html, body').animate({
        scrollTop: $(".sideBaricons").offset().top
        }, 600);
    }
    else{
        window.location.href = '/index.php';
        $( "#tabbtn3" ).trigger( "click" );
        $('html, body').animate({
        scrollTop: $(".sideBaricons").offset().top
        }, 600);
    }

});

当我不在.addfr时点击index.php时,我会重定向到index.php,之后我想关注特定元素。但是,我的代码会在页面加载后重定向并关注我的上一页。

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

如果您更改window.location.href,您将获得一个全新的浏览器上下文(就像点击刷新一样)。此更改后无法执行任何代码。您进行此项工作的选项主要限于将所需的代码添加到您将用户重定向到的页面或使用称为History API

的复杂内容

答案 1 :(得分:0)

将URL设置为新页面将丢弃所有正在运行的代码。

一个选项:您可以将其他页面的内容加载到当前页面,例如使用Ajax调用,如果您希望代码保持存在(而不仅仅是更改浏览器URL)。

注意:虽然要求设计,但设计似乎有些错误。最好说明您网页的总体目标:)

答案 2 :(得分:-1)

您可以在重定向之后传递参数,并在文档就绪设置的index.php页面内传递焦点

查看我的代码

$(function() {
    var url= window.location.href;
    if (url.indexOf('setFocus=true') > 0) {
        $("#tabbtn3").trigger("click");
        $('html, body').animate({
            scrollTop: $(".sideBaricons").offset().top
        }, 600);
    }
});
$(".addfr").click(function() {
    var pathname = window.location.pathname;
    if ((pathname == "/index.php") || (pathname == "/")) {
        $("#tabbtn3").trigger("click");
        $('html, body').animate({
            scrollTop: $(".sideBaricons").offset().top
        }, 600);
    } else {
        window.location.href = '/index.php?setFocus=true';
    }
});