铬太早起火了

时间:2015-03-29 16:57:40

标签: javascript google-chrome onload

看起来Chrome浏览器像document.onload一样使用onload / windows.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上的onload问题。

1 个答案:

答案 0 :(得分:1)

一些事情在我身上跳了出来。让我们开始简单,因为这是最有可能发生的问题。

您在页面中直接拥有js,与任何事件无关。这是一个很大的反模式,因为每个浏览器的原始js的确切时间是不同的,并且从未得到保证。因此,让我们通过解决这个问题来解决您的问题。

在页面上创建一个新的脚本标记,然后删除document.write代码。

<script id='pap_x6hetgh' src='//www.example.com/papscript/scripts/trackjs.js' type='text/javascript'> </script>

我打赌你会发现它神奇地起作用。