2013-09-06 9 views
15

Devo puntare una pagina all'altra e quindi scorrere fino a una sezione specifica. In Chrome facendo www.example.com # section1 farebbe il trucco (# section1 può essere un'ancora o l'id di un elemento).Safari ignora/rimuove hashatag quando si cliccano i collegamenti ipertestuali?

ho provato in Chrome e Firefox e in entrambi i browser funziona bene (mi porta alla pagina e poi scorre automaticamente l'ancora comunque in Safari l'hash scompare quando clicco sul collegamento.

Perché è È possibile farlo su Safari, se no come posso aggirare questo problema?

risposta

22

Quando si utilizzano collegamenti ipertestuali che puntano a sezioni interne su altre pagine, è necessario ricordare di aggiungere una barra (/) prima dell'hashtag per compatibilità cross browser

Ad esempio: www.example.com/#item-1

facendo www.example.com#item-1 non è accettata da tutti i browser (a quanto pare per Chrome e Firefox è)

+0

Volevo solo qualcosa che potesse aiutare gli altri. Avevo lo stesso problema. Il formato era esattamente come la soluzione. Tuttavia, il server utilizzava la riscrittura mod per modificare il percorso (.htaccess Wordpress). Sembra che Safari rimuova l'hash quando l'URL viene reindirizzato dal server. – mrbinky3000

+0

È necessario anche questo per gli URL che assomigliano a nomi di directory come 'http: // www.example.com/foo # item-1'. Safari reindirizzando qui lascerà cadere il frammento. Devi invece inviarli qui 'http: // www.example.com/foo/# item-1'. – micah94

0

Per me è stata esattamente la stessa problema come mrbinky3000 ha dichiarato in precedenza: il server di mod-rewrite stava uccidendo l'hash in safari.

La soluzione era quella di utilizzare un completo collegamento assoluto come: http://www.example.com/path/#item-1

-1

ho avuto un problema correlato con Safari (su iPhone/iOS) apparentemente togliendo l'hash/frammento quando si fa una:

var newHash = ...; 
window.location.replace("#" + newHash); 

Il problema effettivo era un errore javascript visualizzato solo su Safari. Poiché non potevo valutare facilmente una console javascript per iPhone, ho scelto di scaricare una versione precedente di Window's Safari (related post, download).

Quindi, ho potuto replicare il problema da iPhone sul desktop della mia finestra utilizzando la vecchia versione di Safari. A quel punto, ho trovato che un tag javascript aveva uno mancante ']'. Questo era un bug legittimo, ma è stato in qualche modo ignorato da Chrome, Firefox e IE.

Il window.location.replace() non è stato nemmeno chiamato, perché il codice era scoppiato sull'errore javascript. Quindi il problema non era che Safari stesse tagliando l'hashtag, anche se appariva in quel modo dai test multi-browser.

4

Caso: Ho parametri dopo '#' come url # myParam = 123, quando ho cambiato params come url # myParam = 789 Safari volte caricata pagina precedente sulla base di myParam = 123,

anche se in Indirizzo bar ha mostrato myParam = 789

Soluzione: utilizzare url? # myParam = 123, quindi Safari caricherà ogni volta una nuova pagina.
Utilizzo '?' prima di "#" ho risolto il mio problema.

+0

ha funzionato bene per me. Grazie –

+0

ha funzionato bene anche per me. Se reindirizzamento da 301 a/sites/# config, Safari vai a/sites /, ma quando reindirizzo a/sites /? # Config, Safari vai a/sites /? # Config Ho modificato la mia funzione di reindirizzamento per aggiungere " ?" se manca quando hash è all'interno dell'URL. –

Problemi correlati