【问题标题】:How to make JS page redirect trigger before page load如何在页面加载前触发 JS 页面重定向
【发布时间】:2013-07-02 08:18:36
【问题描述】:

我使用以下脚本在第一次访问时将页面的访问者重定向到另一个页面,但是它首先加载 index.html 页面,然后触发重定向。谁能指出我在页面加载之前如何触发此脚本的方向?

<script type="text/javascript">
    function redirect(){
    var thecookie = readCookie('doRedirect');
    if(!thecookie){window.location = '/coming-soon.html';
    }}
    function createCookie(name,value,days){if (days){
    var date = new Date();date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";document.cookie = name+"="+value+expires+"; path=/";
    }
    function readCookie(name){
    var nameEQ = name + "=";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,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);}
    return null;
    }
    window.onload = function(){redirect();createCookie('doRedirect','true','1');}
</script>

(这里使用的JS sn-p取自Stack Overflow: JS to redirect to a splash page on first visit

谢谢。

【问题讨论】:

  • 不要在window.onload回调中这样做。只需将此代码放在 head 标签中,浏览器就会运行它,直到它解析它为止。此外,您最好在重定向之前创建 cookie 以确保它执行。
  • 澄清一下,你的意思是把最后一行改成这个? function(){redirect();createCookie('doRedirect','true','1');}
  • 抱歉,没有回答您的最后一个问题。 “这”是什么?
  • 已编辑!点击进入太快了。
  • 我发布了我的答案。

标签: javascript redirect cookies onload


【解决方案1】:

加载窗口时无需等待:

<script type="text/javascript">
    var thecookie = readCookie('doRedirect');
    if(!thecookie) {
       createCookie('doRedirect','true','1');
       window.location = '/coming-soon.html';
    };
    function createCookie(name,value,days){
      // do work
    }
    function readCookie(name){
      // do work
    }
</script>

Petr B. 也说对了:在您的情况下,服务器端重定向更好。

【讨论】:

  • 谢谢,这很好用。因为这只是一个短期的解决方案,我现在会坚持这个,因为我对服务器端的工作还不满意,但会记住它以备不时之需。非常感谢。
【解决方案2】:

试试这个How to Run a jQuery or JavaScript Before Page Start to Load

顺便说一句。如果你想重定向而不显示页面,你必须使用 php 和 cookie 检查。

【讨论】:

    猜你喜欢
    • 2015-02-23
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多