使用jQuery确定用户是否已将完整的URL复制并粘贴到其浏览器中?

时间:2015-07-09 08:42:57

标签: javascript jquery html

无论有没有jQuery,都不确定这是否可行。我有一个页面,其中有两个下拉菜单;一个显示今天的汽车销售,另一个显示昨天的汽车销售。今天的销售总是在页面加载时呈现;选中单选按钮后,将呈现比较销售,并在URL上添加额外路径。

我遇到的问题是,当用户被发送带有额外路径的URL时(即在发送链接之前选择了比较菜单),今天的销售下拉列表的文本等在打开时不会填充链接。

所以对于例如:

没有比较的网址: http://www.example.com/today/sales

打开比较下拉列表的网址: http://www.example.com/today/sales/compare/yesterday

我想创建一个if语句来说出类似

的内容
if(link.pasted) {
 //do this
}

再次不确定这是否可行。

2 个答案:

答案 0 :(得分:1)

当用户做出选择时,您似乎已将整个页面重定向到不同的URL,而您应该考虑在URL的末尾使用散列来指示已进行“比较”。

所以你最终会得到两个网址,其中可以粘贴到浏览器中

http://www.example.com/today/sales
http://www.example.com/today/sales#compare-yesterday

将散列应用于javascript操作的第一个网址

是很容易的
$('input:radio.compareYesterday').click(function(){
    location.hash = "compare-yesterday";
});

你也可以观察哈希位置的变化,以便对视图进行一些更新 - 我建议你把它包装在一个函数中,因为你也会在onload上做它!。

function updateUI(){
    if(location.hash == "#compare-yesterday"){
        // do whatever happens when comparison is active
    }
    else{
        // reset the UI to its default state
    }
}

$(function(){
    $(window).on('hashchange',updateUI);

    // other onload stuff

    updateUI();
});

This fiddle demonstrates 但是jsfiddle不允许我直接通过哈希的方式直接结果 - 所以尽管代码在那里我不能证明如果你直接去了它也会工作#compare-yesterday路线。

这是单页应用程序如何处理路由的基础,以及如何根据用户操作调整视图(或者实际上,如果他们已经跟踪了SPA的链接)。如果您有兴趣了解更多信息,您可能希望了解一下Angular等框架。

答案 1 :(得分:0)

根据页面的整个架构,您可以在下拉列表选择中将js变量设置为某个值。然后,您可以检查是否设置了此变量以确定用户是否刚刚访问此页面。