2012-02-15 13 views
5

w JavaScript mogę przekierować i zachować ciąg kwerendy i Fragment identyfikator takiego:Jak zrobić przekierowanie http-equiv zachowującego query_string i fragment_id

window.location = "NEW_LOCATION" + window.location.search + window.location.hash; 

dla witryn bez JavaScript można użyć http-equiv nagłówek meta. Ale ta spada ciąg kwerendy i fragment ID:

<head> 
    <meta http-equiv="Refresh" content="300; url=NEW_LOCATION" /> 
</head> 

Czy istnieje sposób, aby zrobić równowartość użyciu http-equiv = „refresh”, który zachowuje ciąg kwerendy i Fragment ID?

+0

Dołącza ciągu zapytania i fragmentu NEW_LOCATION? NEW_LOCATION # fragment? Querystring –

+1

@Frederik, nie wiem, co są przed ręką. Użytkownik może je ustawić i chcę je przenieść do nowej lokalizacji. – kanaka

Odpowiedz

1

Nie bez języka skryptowego po stronie serwera, który umieszcza właściwy adres URL w tagu HTML (lub bezpośrednio wysyła nagłówek Refresh).

+0

To też moja wiara. Masz coś ostatecznego, co możesz przytoczyć? – kanaka

4

Możesz użyć JavaScript, aby zaktualizować metatag ciągiem zapytania i hash.

Aktualizacja Lepszym rozwiązaniem dla IE8 + byłaby tag noscript i przekierowanie obsługiwane przez JavaScript. Dodaj przekierowanie jako atrybut danych-miejsca docelowego na elemencie HTML, aby skrypt mógł go łatwo pobrać.

<!DOCTYPE html> 
 
<html data-destination="http://stackoverflow.com"> 
 
    <head> 
 
    <noscript><meta id="redirect" http-equiv="refresh" content="0; url=http://stackoverflow.com"></noscript> 
 
    </head> 
 

 
    <body> 
 
    This page has moved. Redirecting... 
 
    
 
    <!-- Redirect in JavaScript with meta refresh fallback above in noscript --> 
 
    <script> 
 
    var destination = document.documentElement.getAttribute('data-destination'); 
 
    window.location.href = destination + (window.location.search || '') + (window.location.hash || ''); 
 
    </script> 
 
    </body> 
 
</html>

0

używam następujący skrypt (po formularzu, ale przed końcem ciała). Wymagany adres URL ("hidAutoURL") jest najpierw przechowywany w ukrytej zmiennej (od strony serwera).

document.write służy do aktualizacji meta.

<BODY> 

    <FORM> 
    </FORM> 

    <script> 
     function getAutoURL() 
     { 
      var url = document.getElementById('hidAutoURL').value; 
      return url; 
     } 

     //Update META for auto-refresh 
     var configuredTime = document.getElementById('hidRefrTime').value; 
     var content = configuredTime + ';url=' + getAutoURL('url'); 
     document.write('<meta http-equiv="refresh" content="'+content + '"/>'); 

    </script> 

</BODY> 

Odniesienia

  1. What is the correct way to write HTML using Javascript?
  2. Changing the content of meta refresh does not change refreshing time
  3. Using document.write
Powiązane problemy