不管有没有jQuery,我都不确定这是否可行。我有一个页面,其中有两个下拉菜单;一个显示今天的汽车销量,另一个显示昨天的汽车销量。今天的销售额总是在页面加载时呈现;当选中一个单选按钮时,将呈现比较销售额,并在URL上添加额外的路径。
我的问题是,当用户发送带有额外路径的url (即,在发送链接之前已经选择了比较菜单),当他们打开链接时,Today's Sales下拉菜单的文本等不会填充。
因此,例如:
不带比较的网址:http://www.example.com/today/sales
打开比较下拉菜单的URL:http://www.example.com/today/sales/compare/yesterday
我想创建一个if语句来表示如下内容
if(link.pasted) {
//do this
}同样,我不确定这是否可能。
发布于 2015-07-09 17:15:00
当用户做出选择时,您似乎已将整个页面重定向到不同的URL,相反,您应该考虑在url的末尾使用散列来指示发生了“比较”。
因此,您最终将得到两个urls,这两个urls都可以粘贴到浏览器中
http://www.example.com/today/sales
http://www.example.com/today/sales#compare-yesterday
将散列应用于javascript操作的第一个url非常简单。
$('input:radio.compareYesterday').click(function(){
location.hash = "compare-yesterday";
});您还可以观察散列位置的变化,以便对视图执行一些更新-我建议您将其封装在一个函数中,因为您也将在加载时执行该操作!
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();
});然而,jsfiddle不允许我以传递散列的方式直接指向结果的url -因此,尽管有代码,但我不能证明如果您直接转到#compare-yesterday路由,它也可以工作。
这是单页应用程序如何处理路由的基础,以及如何根据用户的操作调整视图(或者实际上,如果他们跟随链接进入您的SPA)。如果您有兴趣了解更多信息,您可能希望了解一下Angular等框架。
发布于 2015-07-09 17:02:06
根据页面的整个架构,您可以在下拉选择时将js变量设置为某个值。然后,您可以检查是否设置了此变量,以确定用户是否刚刚访问了此页面。
https://stackoverflow.com/questions/31312405
复制相似问题