2015-07-13 19 views
0

我正在使用此代碼將人們重定向到某些網址,具體取決於他們選擇的瀏覽器語言。爲什麼FF中的window.location方式比Chrome更快?

如您所見,如果他們有德語瀏覽器,則不會發生變化。 如果他們有英文,法文或西班牙文瀏覽器,他們將被重定向到正確的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不會加載,並且重定向將無縫地發生。

但是,在重定向發生之前,Google Chrome會顯示難看的HTML塊。

有沒有辦法阻止它使用這種JavaScript重定向?

謝謝!

+2

爲什麼你要做JavaScript重定向而不是返回301或302重定向? –

+2

如何使用正確的服務器端重定向? – Cerbrus

回答

3

而且這樣做在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; 
} 
?> 
+1

就是這樣,謝謝:) – Peanuts

3

但是,Google Chrome會在重定向發生之前顯示難看的HTML塊。 有沒有辦法阻止它使用這種JavaScript重定向?

有你的HTML文檔看起來像這樣

<body style="display:none;"> 
... 
<script> 
    document.body.style.display = ''; 
</script> 
</body> 
相關問題