Bagaimana cara kerja opsi "Minta Situs Desktop"?

94

Untuk iOS google chrome, ketika pengguna menekan tombol "Minta situs desktop", apa yang dilakukan browser untuk mencoba membuka situs desktop? Saya membayangkan semacam tajuk atas permintaan yang dicari situs, atau yang serupa?

butallmj
sumber

Jawaban:

64

Saya pikir satu-satunya perbedaan adalah User-Agent:header dalam permintaan tersebut.

Berikut adalah header User-Agent yang dikirim oleh Chrome di perangkat Android saya:

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

Perhatikan kata "Seluler 'di bagian pertama, dan juga penyebutan sistem dan perangkat Android. Memeriksa ini, saya melihat bahwa itu juga memberikan informasi yang salah - yaitu X11 dan x86_64 - untuk mencocokkan nilai yang dikirim oleh versi Desktop Linux dari Chrome.

dsh
sumber
14
Sebuah header terpisah akan menjadi brilian. Agen Pengguna mengendus sangat mengerikan.
Mu Pikiran
10
Saya setuju. Terkadang deteksi dan pengalihan otomatis yang diterapkan oleh beberapa situs sangat kontraproduktif dan memberatkan.
dsh
5
Solusi yang lebih baik adalah mendeteksi ukuran perangkat, antarmuka, dan kemampuan. Kueri media CSS adalah langkah ke arah yang benar.
Brad
1
Fitur ini tidak diimplementasikan dengan tombol UA sederhana dan penyegaran. Faktanya adalah bahwa sebagian besar situs seluler TIDAK akan beralih kembali ke desktop jika dimuat dengan string UA desktop. Jadi Safari menggunakan permintaan asli Anda? Nggak. Tampaknya berfungsi meskipun Anda pertama kali mengetik di URL untuk situs seluler. Saya tidak tahu bagaimana penerapannya karena nama versi seluler sama sekali tidak distandarisasi, tetapi ada sesuatu yang lebih cerdas terjadi daripada perubahan UA sederhana.
Andrew G
Saya ingin menunjukkan bahwa "area pandang tata letak" juga akan berubah jika salah satu memicu opsi "Minta Situs Desktop", yang memengaruhi kueri media. Periksa -mobile-web-handbook untuk informasi lebih lanjut tentang layout viewport.
Rick
19

Hanya ingin menunjukkan bahwa Chrome sekarang tidak hanya mengubah User-Agenttetapi juga mengabaikan tag meta viewport asli jika Anda "Meminta Situs Desktop". Oleh karena itu, tidak perlu User-Agentlagi mengendus dan Anda dapat mengandalkan perubahan viewport seperti yang dilakukan oleh sebagian besar situs responsif secara otomatis. Lihat Perubahan ini untuk referensi lebih lanjut.

Thomas
sumber
1
Terima kasih untuk itu. situs web saya yang sangat sederhana berperilaku sangat berbeda ketika tidak diklik dan saya tidak bisa mengerti mengapa karena saya tidak melakukan apa pun selain kueri media di CSS.
R Reveley
17

Satu perbedaan kecil lainnya adalah bahwa permintaan tersebut tampaknya berada di URL terakhir yang sengaja dimasukkan sebelum direktur ulang memindahkannya. Sebagai contoh:

Diberikan: somesite.com mengendus agen, melihat Android, dan melakukan document.location + = "/ m";

Kemudian: browser akan memiliki URL somesite.com/m

Tapi: jika Anda "Request desktop site" itu akan mengubah User-Agent dan meminta ulang dari somesite.com

Kecuali: Anda telah masuk langsung ke URL seluler somesite.com/m di tempat pertama, yang dalam hal ini hanya memuat ulang somesite.com/m.

Saya berharap ini berfungsi dengan pengalihan HTTP 301 dan 302, saya tahu ini berfungsi dengan perubahan document.location (setidaknya seperti yang dijelaskan), dan akan berspekulasi bahwa ini berfungsi dengan <meta> menyegarkan.

Jason Miller
sumber
Apakah Anda mendasarkan jawaban Anda dari ini ?
Keale
@Keale mungkin sebaliknya, mengingat cap waktu
verbumSapienti
Sepertinya jika permintaan POST mendapat 302 atau 303 menyarankan GET untuk URL lain, maka pengguna mengubah pengaturan 'tampilan desktop', browser akan mengirimkan permintaan GET ke URL asli yang mengembalikan 302/303 (kehilangan parameter POST ). Sepertinya Firefox dan Chrome melakukan ini dan IMO ini jelas bukan yang seharusnya terjadi.
Jake
-2

Cuplikan javascript ini secara efektif akan melakukan hal yang sama:

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

10us
sumber