chrome 过早触发 onload
chrome fires onload too early
看起来 chrome 浏览器使用 onload/windows.onload 就像 document.onload(参见:window.onload vs document.onload)
这导致了 chrome 过早重新加载页面的问题,因此我的页面出现了循环。 Firefox 和 IE 没有这个问题。
我有以下代码来创建cookie(这不是我自己的代码,它来自一个名为'Post Affiliate Pro'的软件):
<script type="text/javascript">
<!--
document.write(unescape("%3Cscript id='pap_x6hetgh' src='" + (("https:" == document.location.protocol) ? "https://" : "http://") +
"www.example.com/papscript/scripts/trackjs.js' type='text/javascript'%3E%3C/script%3E"));//-->
</script>
我必须重新加载页面,这就是我使用以下代码的原因(为了更好地阅读,我减少了一些 checkCookie 代码):
<script>
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+d.toUTCString();
document.cookie = cname + "=" + cvalue + "; " + expires;
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1);
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function checkCookie() {
var user = getCookie("PAP");
if (user != "") {
}
else {
window.location.reload();
}
}
</script>
<body onload="checkCookie();">
我正在寻找解决问题的方法。 chrome 上的加载问题。
有几件事让我印象深刻。让我们从简单的开始,因为这是最有可能的问题。
页面中直接有js,没有绑定任何事件。这是一个很大的反模式,因为原始 js 的确切时间对于每个浏览器都是不同的,并且无法保证。因此,让我们开始解决您的问题。
像这样在您的页面上创建一个新的脚本标记,并完全删除 document.write 代码。
<script id='pap_x6hetgh' src='//www.example.com/papscript/scripts/trackjs.js' type='text/javascript'> </script>
我打赌你会发现它神奇地起作用。
看起来 chrome 浏览器使用 onload/windows.onload 就像 document.onload(参见:window.onload vs document.onload)
这导致了 chrome 过早重新加载页面的问题,因此我的页面出现了循环。 Firefox 和 IE 没有这个问题。
我有以下代码来创建cookie(这不是我自己的代码,它来自一个名为'Post Affiliate Pro'的软件):
<script type="text/javascript">
<!--
document.write(unescape("%3Cscript id='pap_x6hetgh' src='" + (("https:" == document.location.protocol) ? "https://" : "http://") +
"www.example.com/papscript/scripts/trackjs.js' type='text/javascript'%3E%3C/script%3E"));//-->
</script>
我必须重新加载页面,这就是我使用以下代码的原因(为了更好地阅读,我减少了一些 checkCookie 代码):
<script>
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+d.toUTCString();
document.cookie = cname + "=" + cvalue + "; " + expires;
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1);
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function checkCookie() {
var user = getCookie("PAP");
if (user != "") {
}
else {
window.location.reload();
}
}
</script>
<body onload="checkCookie();">
我正在寻找解决问题的方法。 chrome 上的加载问题。
有几件事让我印象深刻。让我们从简单的开始,因为这是最有可能的问题。
页面中直接有js,没有绑定任何事件。这是一个很大的反模式,因为原始 js 的确切时间对于每个浏览器都是不同的,并且无法保证。因此,让我们开始解决您的问题。
像这样在您的页面上创建一个新的脚本标记,并完全删除 document.write 代码。
<script id='pap_x6hetgh' src='//www.example.com/papscript/scripts/trackjs.js' type='text/javascript'> </script>
我打赌你会发现它神奇地起作用。