【问题标题】:Why is window.location way faster in FF than in Chrome?为什么 FF 中的 window.location 比 Chrome 中更快?
【发布时间】:2015-10-01 11:27:54
【问题描述】:

我正在使用此代码将人们重定向到某些 URL,具体取决于他们选择的浏览器语言。

如您所见,如果他们有德语浏览器,则不会发生任何变化。 如果他们有英语、法语或西班牙语浏览器,他们将被重定向到正确的 URL。

这仅在浏览器会话中发生一次,因此如果需要,他们可以使用另一种语言访问德国家庭。

<?php 

session_start();
if(!isset($_SESSION['visitedOnce'])){

    if(is_home() && ICL_LANGUAGE_CODE == 'de' ){

        $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
        switch ($lang){
            case "de":
                //echo "PAGE DE";
                break;
            case "en":
                //echo "PAGE EN";
                echo '<script type="text/javascript">window.location = "http://www.google.com";</script>';
                break;
            case "es":
                //echo "PAGE ES";
                echo '<script type="text/javascript">window.location = "http://www.google.es";</script>';
                break;        
            case "fr":
                //echo "PAGE FR";
                echo '<script type="text/javascript">window.location = "http://www.google.fr";</script>';
                break;        
            default:
                //echo "PAGE EN - Setting Default";
                echo '<script type="text/javascript">window.location = "http://www.google.com";</script>';
                break;
        }

    }

    $_SESSION['visitedOnce'] = true;
}
?>

在 Firefox 中工作正常,HTML 不会加载,重定向会无缝进行。

但是,在重定向发生之前,谷歌浏览器会显示丑陋的无样式 HTML 块。

有没有办法使用这种 javascript 重定向来阻止它?

谢谢!

【问题讨论】:

  • 为什么要在 JavaScript 中进行重定向而不是返回 301 或 302 重定向?
  • 使用适当的服务器端重定向怎么样?

标签: javascript php google-chrome redirect url-redirection


【解决方案1】:

那么如何在 PHP 中直接进行重定向呢?然后你不会看到丑陋的无样式 HTML 块......请注意,header('Location: http://www.google.***'); 之前没有输出。

<?php 
session_start();

if(!isset($_SESSION['visitedOnce'])){
    $_SESSION['visitedOnce'] = true;

    if(is_home() && ICL_LANGUAGE_CODE == 'de' ){
        $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
        switch ($lang){
            case "de":
                //echo "PAGE DE";
                break;
            case "en":
                //echo "PAGE EN";
                header('Location: http://www.google.com');
                exit;
                //echo '<script type="text/javascript">window.location = "http://www.google.com";</script>';
                //break;
            case "es":
                //echo "PAGE ES";
                header('Location: http://www.google.es');
                exit;
                //echo '<script type="text/javascript">window.location = "http://www.google.es";</script>';
                //break;        
            case "fr":
                //echo "PAGE FR";
                header('Location: http://www.google.fr');
                exit;
                //echo '<script type="text/javascript">window.location = "http://www.google.fr";</script>';
                //break;        
            default:
                //echo "PAGE EN - Setting Default";
                header('Location: http://www.google.com');
                exit;
                //echo '<script type="text/javascript">window.location = "http://www.google.com";</script>';
                //break;
        }

    }

    //$_SESSION['visitedOnce'] = true;
}
?>

【讨论】:

    【解决方案2】:

    但是,在重定向发生之前,Google Chrome 会显示丑陋的无样式 HTML 块。 有没有办法使用这种 javascript 重定向来防止它?

    让您的 html 文档看起来像这样

    <body style="display:none;">
    ...
    <script>
        document.body.style.display = '';
    </script>
    </body>
    

    【讨论】:

      猜你喜欢
      • 2011-07-06
      • 1970-01-01
      • 1970-01-01
      • 2013-07-12
      • 2013-07-22
      • 2011-05-01
      • 1970-01-01
      • 2011-01-24
      • 1970-01-01
      相关资源
      最近更新 更多