对于所有主要浏览器(除IE外),当页面由于返回按钮操作而加载时,JavaScript的onload
事件不会触发 - 它只在页面第一次加载时触发。
有人可以给我指出一些可解决这个问题的跨浏览器示例代码(Firefox,Opera,Safari,IE等)吗?我熟悉Firefox的pageshow
事件,但不幸的是,Opera和Safari都没有实现此功能。
对于所有主要浏览器(除IE外),当页面由于返回按钮操作而加载时,JavaScript的onload
事件不会触发 - 它只在页面第一次加载时触发。
有人可以给我指出一些可解决这个问题的跨浏览器示例代码(Firefox,Opera,Safari,IE等)吗?我熟悉Firefox的pageshow
事件,但不幸的是,Opera和Safari都没有实现此功能。
我尝试了Bill的解决方案,使用了$(document).ready...,但一开始它并没有起作用。我发现如果脚本放在HTML部分之后,它将不起作用。如果放在head部分,它只能在IE中工作。该脚本在Firefox中无法工作。
Bill,我敢回答你的问题,但是我的猜测不是100%确定。我认为除了IE浏览器以外,其他浏览器在将用户带到历史记录页面时,不仅会从缓存中加载页面和其资源,还会恢复整个DOM(阅读会话)状态。IE不进行DOM恢复(或至少没有这样做),因此onload事件似乎对于在那里正确重新初始化页面是必要的。
在IE 9上,卸载事件无法正常工作。我尝试使用加载事件(onload()),在IE 9和FF5上都可以正常工作。
示例:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
jQuery(window).bind("load", function() {
$("[name=customerName]").val('');
});
</script>
</head>
<body>
<h1>body.jsp</h1>
<form action="success.jsp">
<div id="myDiv">
Your Full Name: <input name="yourName" id="fullName"
value="Your Full Name" /><br> <br> <input type="submit"><br>
</div>
</form>
</body>
</html>
我使用了一个html模板。在这个模板的custom.js文件中,有一个像这样的函数:
jQuery(document).ready(function($) {
$(window).on('load', function() {
//...
});
});
jQuery(document).ready(function($) {
//...
});
//Window Load Start
window.addEventListener('load', function() {
jQuery(document).ready(function($) {
//...
});
});
好的,我尝试了一下,在Firefox 3、Safari 3.1.1和IE7中可以运行,但在Opera 9.52中不行。
如果你使用下面所示的示例(基于palehorse的示例),当页面首次加载时会弹出一个警告框。但是,如果你转到另一个URL,然后点击“返回”按钮返回到这个页面,Opera中不会弹出警告框(但在其他浏览器中会弹出)。
总之,我认为现在已经足够接近了。谢谢大家!
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
<meta http-equiv="expires" content="0">
<script src="jquery.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(
function(){
alert('test');
}
);
</script>
</head>
<body>
<h1>Test of the page load event and the Back button using jQuery</h1>
</body>
</html>
onunload=""
时,同样的失败发生了...<body onload="page_defaults()" onunload="back_button_reload_fix()>
function back_button_reload_fix(){
page_defaults();
}