我一直在用一些听起来很简单的东西挣扎几个小时。 我所拥有的是一个复选框列表,如果选中一个复选框,页面网址将会更改(保存过滤器选项,以便您可以将该网址共享到过滤器)。当用户想要返回时,除了一点之外它完美地工作。应取消选中复选框。
使用jQuery
setBoxes()是函数;
我试过了:
function pageLoad() {
setBoxes();
}
和
$(document).ready(function(){
setBoxes();
}
我也添加了
window.onunload = function(){};
但这些解决方案都没有奏效(该功能没有运行,我查了一下)。
之后我想我可以用php做这个(获取数组的url,如果在数组echo中检查),但php不会再运行(我猜它已兑现)。
我有什么选择可以尝试因为我真的无法解决这个简单的问题。
因为我的代码非常大,我提出了一个非常小的http://jsfiddle.net/yzoztp05/1/情况示例,更新了jsfiddle中的url被阻止,因此它不能完全正常工作。
为了使情况更加清晰,我制作了一段视频https://www.youtube.com/watch?v=jaSc1fmaJD4&feature=youtu.be。
设置复选框的代码
//convert the url to array
function getQueryVariable(variable)
{
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
if(pair[0] == variable){return pair[1];}
}
return(false);
}
// Set the checkboxes to checked if they are in the array
function setBoxes()
{
var prijsUrl = getQueryVariable("prijs");
// first set all checkboxes on unchecked
$('.prijsFilterBox').prop('checked', false);
alert("Loaded");
if(prijsUrl != false)
{
var res = prijsUrl.split("-");
for(var i = 0; i < res.length; i++ )
{
$('.prijsFilterBox[value='+res[i]+']').prop('checked', true);
console.log("prijs = "+res[i]);
}
}
else
{
console.log("prijs = null");
}
}
如果我刷新页面,它会起作用,但当用户按下后退按钮时它不会运行。如果它无法在页面上运行javascript,我将尝试使用php创建一个不同的脚本。
TLDR 如何在页面背面(所有浏览器)运行jquery函数?
答案 0 :(得分:1)
有可能(并且我认为很多人正在使用这种方式)拥有每500毫秒调用一次的timeOut函数来检查URL是否已更改,而不是使用&#39;?&#39;使用哈希&#39;#&#39;因此用户始终在同一页面上,您可以捕获URL更改。
如果你需要坚持&#39;?&#39; ,也许你可以用window.onbeforeunload函数做点什么。