Come funziona l'opzione "Richiedi sito desktop" di Chrome?


94

Per iOS google chrome, quando un utente preme il pulsante "Richiedi sito desktop", cosa fa il browser per provare a visualizzare un sito desktop? Immagino una sorta di intestazione sulla richiesta che i siti stanno cercando o qualcosa di simile?

Risposte:


64

Penso che l'unica differenza sia l' User-Agent:intestazione nella richiesta.

Ecco le intestazioni User-Agent inviate da Chrome sul mio dispositivo Android:

Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.45 Safari/535.19

Notare la parola "Mobile" nel primo e anche la menzione del sistema e del dispositivo Android. Controllando questi, vedo che fornisce anche informazioni false - vale a dire X11 e x86_64 - per corrispondere strettamente al valore inviato dalla versione Desktop Linux di Cromo.


14
Un'intestazione separata sarebbe brillante. Lo sniffing dell'agente utente è così orribile.
Mu Mind

10
Sono d'accordo. A volte il rilevamento automatico e il reindirizzamento implementato da alcuni siti è estremamente controproducente e aggravante.
dsh

5
Una soluzione migliore sarebbe rilevare le dimensioni, le interfacce e le capacità del dispositivo. Le media query CSS sono un passo nella giusta direzione.
Brad

1
Questa funzione non è implementata da un semplice switch e aggiornamento UA. La verità è che la maggior parte dei siti mobili NON tornerà al desktop se caricata con una stringa UA desktop. Quindi Safari utilizza la tua richiesta originale? No. Sembra funzionare anche se hai inizialmente digitato l'URL del sito per dispositivi mobili. Non so come sia implementato perché il nome delle versioni mobili non è affatto standardizzato, ma c'è qualcosa di più intelligente in corso di una semplice modifica di UA.
Andrew G

Vorrei sottolineare che la "visualizzazione layout" cambierebbe anche se si attiva l'opzione "Richiedi sito desktop", che influisce sulla media query. Consulta il manuale sul Web mobile per ulteriori informazioni sulla visualizzazione del layout.
Rick

19

Volevo solo far notare che Chrome ora non solo cambia il, User-Agentma ignora anche il meta tag viewport originale se "Richiedi sito desktop". Quindi non sarà più necessario annusare User-Agente puoi fare affidamento sul cambio di viewport come farà automaticamente la maggior parte dei siti reattivi. Vedere questa modifica per ulteriori riferimenti.


1
Grazie per quello. il mio sito web molto semplice si comporta in modo molto diverso quando non viene cliccato e non riesco a capire il motivo poiché non sto facendo nient'altro che query multimediali in CSS.
R Reveley

17

Un'altra piccola differenza è che la richiesta sembra essere stata inviata all'ultimo URL inserito intenzionalmente prima che qualsiasi re-director lo spostasse. Per esempio:

Dato: somesite.com annusa l'agente, vede Android e fa un document.location + = "/ m";

Quindi: il browser avrà un URL di somesite.com/m

Ma: se "Richiedi sito desktop" cambierà lo User-Agent e richiederà nuovamente da somesite.com

A meno che: tu non fossi entrato direttamente nell'URL mobile di somesite.com/m in primo luogo, nel qual caso si ricarica semplicemente somesite.com/m.

Mi aspetto che funzioni con i reindirizzamenti HTTP 301 e 302, so che funziona con le modifiche a document.location (almeno come descritto) e ipotizzo che funzioni con gli aggiornamenti <meta>.


Hai basato la tua risposta su questo ?
Keale

@Keale probabilmente il contrario, visti i timestamp
verbumSapienti

Sembra che se una richiesta POST riceve un 302 o 303 che suggerisce un GET per un altro URL, l'utente cambia l'impostazione della "visualizzazione desktop", il browser invia una richiesta GET all'URL originale che ha restituito il 302/303 (perdendo i parametri POST ). Sembra che sia Firefox che Chrome lo facciano e IMO questo non è sicuramente ciò che dovrebbe accadere.
Jake

-2

Questo snippet di javascript farà effettivamente lo stesso:

function requestDesktopSite() {
    document.getElementsByTagName('meta')['viewport'].content='min-width: 980px;';
}
<button onclick="requestDesktopSite()">Request Desktop Site</button>

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.