2009-02-06 19 views
39

Ho una pagina usando qualcosa sulla falsariga diIl meta-refresh non funziona?

<meta http-equiv="refresh" content="0;url=http://example.com/" /> 

ma per alcuni utenti in un determinato posto di lavoro questo non funziona. Il è in IE. C'è qualcosa di sbagliato con i cookie o un'impostazione da qualche parte che potrebbe causare il fallimento di questo? Non ho mai sentito parlare di una cosa del genere.

+0

Greg, dovresti mostrare il contesto del tuo markup. Cosa c'è sopra? Cosa c'è sotto, ecc. – Sampson

+0

Forse è un bug causato da marcatura non valida che si verifica solo in questo determinato browser su questa macchina certa. – Gumbo

risposta

73

Il problema è che quando IE vede questo:

<meta http-equiv="refresh" content="0;http://www.example.com" /> 

si aspetta che il contenuto degli attributi di contenere un numero. L'unica volta che IE controlla la presenza di un URL è se l'attributo contenuto contiene "URL =" in modo che il reindirizzamento che è più utilizzabile in tutti i browser è questo:

<meta http-equiv="refresh" content="0;URL=http://www.example.com" /> 

L'esempio riportato sopra dovrebbe reindirizzare immdetiately, ma se è stato modificato il 0 per un altro numero, aspetterebbe molti secondi. Spero che tutto abbia un senso, dovrebbe funzionare bene, ma continuo a pensare che la mia prima idea fosse la migliore.

+1

lol, stavo facendo lo stesso comportamento .. cattivo errore dimenticando l'URL =. Grazie :-) –

+0

+1 grazie, mi hai strappato i capelli – eddy147

+0

Se potessi passare questo più di una volta avrei ... –

0

Solo un'ipotesi: forse ci sono alcuni adblocker installati su quelle macchine in cui il reindirizzamento non funziona. Non riesco a pensare ad alcun altro motivo per cui questa tecnica comune funziona su alcune macchine mentre fallisce su altre per te.

5

è una versione molto vecchia di IE? Se sì, prova:

<meta http-equiv="refresh" content="0;url=http://example.com/"> </meta> 

Ha bisogno di uno spazio bianco. L'editor HTML si lamenterà, ma lo ignorerà.

+1

Davvero vecchio, intendi IE7? Haha, questo finalmente ha funzionato per me. Grazie! – guanome

3

Il tag META non è un tag vuoto e non ha un tag di chiusura in HTML, solo in XHTML. (Se siete veramente sta inviando XHTML, potrebbe non funzionare bene su vecchie versioni di IE in ogni caso, ci sono solo soluzioni alternative per inviare XHTML per le vecchie versioni di IE.)

Prova:

<meta http-equiv="refresh" content="0;url=http://example.com/"> 

W3 Schools META Tag Description

Si potrebbe anche provare:

  1. Controllo delle versioni principali e secondarie di IE. Puoi farlo con l'aiuto-> sull'opzione del menu.
  2. IE è stato storicamente confuso da nomi di file e MIMEtypes. Assicurati di inviare il tuo codice HTML come file di estensione htm o html e che quei tipi di file siano impostati sul tuo server per inviare un mimo tipo text/html.
  3. Assicurarsi che il server non stia inviando un'intestazione http di aggiornamento meta in conflitto.
31

Esiste un'impostazione di sicurezza in Internet Explorer che non consente l'aggiornamento del metatag. È sotto la scheda Sicurezza, quindi scegli Livello personalizzato e Meta tag Aggiorna sotto Varie. Se è disabilitato, impedirebbe il funzionamento del meta refresh.

Oltre a poter essere disabilitato in modo selettivo, viene automaticamente disabilitato se si imposta il livello di sicurezza di IE su "Alto" [osservato in IE9].

+0

Assolutamente perfetto. Questa era la soluzione esatta nel mio caso, poiché stavo accedendo a Internet Explorer da una VM di Azure a scopo di test. – julealgon

+0

Questa impostazione di IE (livello di sicurezza = 'Alto') è un problema dato che Meta Tag Refresh è spesso citato come soluzione per ridirigere quando javascript è disabilitato, il che vale anche quando il livello di sicurezza è alto. – frank

0

Nel caso in cui qualcuno cerca di utilizzare meta refresh per reindirizzare al nuovo URL in applicazioni di Facebook (o Tab pagina applicazione o IFRAME app), il tag è disabilitato da Facebook in qualche modo.

soluzione è:

<script> 
top.window.location = 'http://example.com'; 
</script> 

Ricordatevi di target "top", come le applicazioni di Facebook sono in IFRAME.