ตัวเลือก“ ขอไซต์เดสก์ท็อป” ของ Chrome ทำงานอย่างไร


94

สำหรับ iOS google chrome เมื่อผู้ใช้กดปุ่ม "ขอไซต์บนเดสก์ท็อป" เบราว์เซอร์จะทำอย่างไรเพื่อพยายามเปิดไซต์เดสก์ท็อป ฉันนึกภาพส่วนหัวบางอย่างในคำขอที่ไซต์กำลังมองหาหรืออะไรที่คล้ายกัน

คำตอบ:


64

ฉันคิดว่าความแตกต่างเพียงอย่างเดียวคือUser-Agent:ส่วนหัวในคำขอ

นี่คือส่วนหัว User-Agent ที่ Chrome ส่งมาบนอุปกรณ์ 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

สังเกตคำว่า "มือถือ" ในคำแรกและยังมีการกล่าวถึงระบบและอุปกรณ์ Android ด้วยการตรวจสอบสิ่งเหล่านี้ฉันเห็นว่ามันให้ข้อมูลเท็จเช่น X11 และ x86_64 เพื่อให้ตรงกับค่าที่ส่งโดยเดสก์ท็อป Linux เวอร์ชันของ โครเมียม.


14
ส่วนหัวแยกต่างหากจะยอดเยี่ยม การดมกลิ่นของตัวแทนผู้ใช้นั้นน่ากลัวมาก
Mu Mind

10
ฉันเห็นด้วย. บางครั้งการตรวจจับอัตโนมัติและการเปลี่ยนเส้นทางที่ใช้โดยไซต์บางแห่งอาจเป็นการต่อต้านและทำให้รุนแรงขึ้นอย่างมาก
dsh

5
ทางออกที่ดีกว่าคือการตรวจจับขนาดอุปกรณ์อินเทอร์เฟซและความสามารถ คิวรีสื่อ CSS เป็นขั้นตอนในทิศทางที่ถูกต้อง
แบรด

1
คุณลักษณะนี้ไม่ได้ใช้งานโดยสวิตช์ UA แบบธรรมดาและรีเฟรช ความจริงของเรื่องนี้คือไซต์บนอุปกรณ์เคลื่อนที่ส่วนใหญ่จะไม่เปลี่ยนกลับไปที่เดสก์ท็อปหากโหลดด้วยสตริง UA บนเดสก์ท็อป แล้ว Safari ใช้คำขอเดิมของคุณหรือไม่? ไม่ ดูเหมือนว่าจะใช้งานได้แม้ว่าคุณจะพิมพ์ URL สำหรับไซต์บนอุปกรณ์เคลื่อนที่ในตอนแรก ฉันไม่รู้ว่ามันใช้งานได้อย่างไรเพราะชื่อของเวอร์ชันมือถือนั้นไม่ได้เป็นมาตรฐาน แต่มีบางอย่างที่ฉลาดกว่าการเปลี่ยนแปลง UA ธรรมดา ๆ
Andrew G

ฉันต้องการชี้ให้เห็นว่า "วิวพอร์ตเค้าโครง" จะเปลี่ยนไปเช่นกันหากมีการเรียกใช้ตัวเลือก "ขอไซต์เดสก์ท็อป" ซึ่งมีผลต่อการสืบค้นของสื่อ ตรวจสอบคู่มือเว็บสำหรับอุปกรณ์เคลื่อนที่สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิวพอร์ตของเค้าโครง
Rick

20

เพียงต้องการชี้ให้เห็นว่า Chrome ไม่เพียง แต่เปลี่ยนแปลงUser-Agentแต่ยังละเว้นเมตาแท็กของวิวพอร์ตเดิมหากคุณ "ขอไซต์เดสก์ท็อป" ดังนั้นจึงไม่จำเป็นต้องดมกลิ่นUser-Agentอีกต่อไปและคุณสามารถพึ่งพาการเปลี่ยนแปลงวิวพอร์ตได้เนื่องจากไซต์ที่ตอบสนองส่วนใหญ่จะทำโดยอัตโนมัติ ดูการเปลี่ยนแปลงนี้สำหรับการอ้างอิงเพิ่มเติม


1
ขอบคุณสำหรับสิ่งนั้น เว็บไซต์ที่เรียบง่ายของฉันเองทำงานแตกต่างกันมากเมื่อไม่มีการคลิกและฉันไม่เข้าใจว่าทำไมฉันจึงไม่ทำอะไรมากไปกว่าการสืบค้นสื่อใน CSS
R Reveley

17

ความแตกต่างเล็กน้อยอีกประการหนึ่งคือคำขอดูเหมือนว่าจะเป็น URL สุดท้ายที่ป้อนโดยเจตนาก่อนที่จะมีกรรมการใหม่ย้ายไป ตัวอย่างเช่น:

ระบุ: somesite.com สูดดมตัวแทนเห็น Android และทำ document.location + = "/ m";

จากนั้น:เบราว์เซอร์จะมี URL เป็น somesite.com/m

แต่:หากคุณ "ขอไซต์เดสก์ท็อป" ระบบจะเปลี่ยน User-Agent และขอใหม่จาก somesite.com

เว้นแต่:คุณได้เข้าไปที่ URL บนอุปกรณ์เคลื่อนที่ของ somesite.com/m โดยตรงตั้งแต่แรกซึ่งในกรณีนี้ก็แค่โหลด somesite.com/m ซ้ำ

ฉันคาดหวังว่าสิ่งนี้ใช้ได้กับการเปลี่ยนเส้นทาง HTTP 301 และ 302 ฉันรู้ว่ามันใช้ได้กับการเปลี่ยนแปลง document.location (อย่างน้อยตามที่อธิบายไว้) และคาดเดาได้ว่ามันใช้ได้กับการรีเฟรช <meta>


คุณยึดคำตอบของคุณจากสิ่งนี้หรือไม่?
Keale

@Keale อาจเป็นอีกทางหนึ่งที่ได้รับการประทับเวลา
verbumSapienti

ดูเหมือนว่าหากคำขอ POST ได้รับ 302 หรือ 303 ที่แนะนำ GET สำหรับ URL อื่นจากนั้นผู้ใช้เปลี่ยนการตั้งค่า "มุมมองเดสก์ท็อป" เบราว์เซอร์จะส่งคำขอ GET ไปยัง URL เดิมที่ส่งคืน 302/303 (สูญเสียพารามิเตอร์ POST ). ดูเหมือนว่าทั้ง Firefox และ Chrome จะทำเช่นนี้และ IMO นี่ไม่ใช่สิ่งที่ควรเกิดขึ้นอย่างแน่นอน
Jake

-2

ข้อมูลโค้ดจาวาสคริปต์นี้จะทำสิ่งเดียวกันได้อย่างมีประสิทธิภาพ:

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.