W Google Chrome na iOS, gdy użytkownik kliknie przycisk „Zażądaj witryny na komputer”, co robi przeglądarka, aby wyświetlić witrynę na komputer? Wyobrażam sobie jakiś nagłówek w żądaniu, którego szukają strony, lub coś podobnego?
Odpowiedzi:
Myślę, że jedyną różnicą jest User-Agent:
nagłówek w żądaniu.
Oto nagłówki User-Agent wysłane przez Chrome na moim urządzeniu z Androidem:
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
Zwróć uwagę na słowo „telefon komórkowy” w pierwszym, a także wzmiankę o systemie i urządzeniu z Androidem. Sprawdzając je, widzę, że zawiera również fałszywe informacje - a mianowicie X11 i x86_64 - aby ściśle odpowiadać wartości wysyłanej przez wersję na komputer z systemem Linux Chrom.
Chciałem tylko zwrócić uwagę, że Chrome teraz nie tylko zmienia, User-Agent
ale także ignoruje oryginalny metatag viewport, jeśli „Żądasz witryny na komputer”. Dzięki temu nie będzie już konieczne wąchanie ich User-Agent
i możesz polegać na zmianie widocznego obszaru, ponieważ większość responsywnych witryn zrobi to automatycznie. Zobacz tę zmianę w celu uzyskania dalszych informacji.
Jeszcze jedna niewielka różnica polega na tym, że żądanie wydaje się dotyczyć ostatniego celowo wprowadzonego adresu URL przed przeniesieniem go przez jakąkolwiek dyrekcję. Na przykład:
Biorąc pod uwagę: somesite.com węszy agenta, widzi Androida i wykonuje dokument.location + = "/ m";
Następnie: przeglądarka będzie miała adres URL witryny somesite.com/m
Ale: jeśli „Zażądaj witryny na komputery”, zmieni to agenta użytkownika i ponownie zażąda od somesite.com
Chyba że: najpierw trafiłeś bezpośrednio na mobilny adres URL somesite.com/m, w takim przypadku po prostu ponownie ładuje somesite.com/m.
Spodziewałbym się, że działa to z przekierowaniami HTTP 301 i 302, wiem, że działa ze zmianami document.location (przynajmniej tak jak opisano) i spekulowałbym, że działa z odświeżeniami <meta>.
Ten fragment kodu javascript skutecznie zrobi to samo:
function requestDesktopSite() {
document.getElementsByTagName('meta')['viewport'].content='min-width: 980px;';
}
<button onclick="requestDesktopSite()">Request Desktop Site</button>