ส่วนย่อยข้อความช่วยให้คุณระบุตัวอย่างข้อความในส่วน URL ได้ เมื่อไปยัง URL ที่มีส่วนย่อยของข้อความ เบราว์เซอร์สามารถเน้น และ/หรือดึงดูดความสนใจของผู้ใช้
ตัวระบุส่วนย่อย
Chrome 80 ถือเป็นการเปิดตัวครั้งใหญ่ ซึ่งมีฟีเจอร์ที่ทุกคนตั้งตารออย่าง โมดูล ECMAScript ใน Web Workers การทำงานร่วมกันที่ไม่มีข้อมูล การทำเชนที่ไม่บังคับ และอื่นๆ การเปิดตัวตามปกติคือ ที่ประกาศผ่าน บล็อกโพสต์ บล็อก Chromium คุณสามารถดูข้อความบางส่วนที่ตัดตอนมาจากบล็อกโพสต์ในภาพหน้าจอด้านล่าง
คุณอาจกำลังสงสัยว่าช่องสีแดงทั้งหมดหมายถึงอะไร ซึ่งเป็นผลมาจากการเรียกใช้
ตัวอย่างต่อไปนี้ในเครื่องมือสำหรับนักพัฒนาเว็บ ซึ่งจะไฮไลต์องค์ประกอบทั้งหมดที่มีแอตทริบิวต์ id
document.querySelectorAll('[id]').forEach((el) => {
el.style.border = 'solid 2px red';
});
ฉันสามารถวาง Deep Link ไปยังองค์ประกอบใดก็ได้ที่ไฮไลต์ด้วยกล่องสีแดง
ตัวระบุส่วนย่อย
ซึ่งผมจะใช้ในแฮชของ
URL ของหน้าเว็บ สมมติว่าฉันต้องการทำ Deep Link ไปยังบทความ แสดงความคิดเห็นใน
ช่องฟอรัมผลิตภัณฑ์ในช่อง
นอกจากนี้ ก็สามารถทำได้โดยการปรับแต่ง URL
https://blog.chromium.org/2019/12/chrome-80-content-indexing-es-modules.html#HTML1
ดังที่คุณเห็นในแผงองค์ประกอบของเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ องค์ประกอบที่เป็นปัญหามี id
ด้วยค่า HTML1
หากฉันแยกวิเคราะห์ URL นี้ด้วยตัวสร้าง URL()
ของ JavaScript คอมโพเนนต์ต่างๆ จะแสดงขึ้นมา
โปรดสังเกตพร็อพเพอร์ตี้ hash
ที่มีค่า #HTML1
new URL('https://blog.chromium.org/2019/12/chrome-80-content-indexing-es-modules.html#HTML1');
/* Creates a new `URL` object
URL {
hash: "#HTML1"
host: "blog.chromium.org"
hostname: "blog.chromium.org"
href: "https://blog.chromium.org/2019/12/chrome-80-content-indexing-es-modules.html#HTML1"
origin: "https://blog.chromium.org"
password: ""
pathname: "/2019/12/chrome-80-content-indexing-es-modules.html"
port: ""
protocol: "https:"
search: ""
searchParams: URLSearchParams {}
username: ""
}
*/
แต่การที่ฉันต้องเปิดเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์เพื่อค้นหา id
ขององค์ประกอบหนึ่งๆ ทำให้เกิดระดับเสียง
เกี่ยวกับความน่าจะเป็นที่ผู้เขียนเนื้อหาส่วนหน้านี้จะลิงก์ด้วย
บล็อกโพสต์
ฉันควรทำอย่างไรหากต้องการลิงก์กับเนื้อหาที่ไม่มี id
สมมติว่าฉันต้องการลิงก์ไปยังโมดูล ECMAScript
ในหัวข้อ Web Workers ดังที่เห็นในภาพหน้าจอด้านล่าง <h1>
ที่เป็นปัญหาไม่ได้
มีแอตทริบิวต์ id
หมายความว่าไม่มีวิธีที่ฉันจะลิงก์ไปที่ส่วนหัวนี้ได้ นี่คือปัญหาที่
แก้โจทย์ส่วนย่อยข้อความ
ส่วนย่อยข้อความ
ข้อเสนอส่วนย่อยข้อความเพิ่มการสนับสนุนสำหรับ ระบุตัวอย่างข้อความในแฮช URL เมื่อไปยัง URL ที่มีส่วนย่อยข้อความดังกล่าว User Agent ช่วยเน้นย้ำและ/หรือทําให้ผู้ใช้สนใจได้
ความเข้ากันได้กับเบราว์เซอร์
เนื่องด้วยเหตุผลด้านความปลอดภัย ฟีเจอร์นี้กำหนดให้ต้องเปิดลิงก์ใน
บริบท noopener
ดังนั้นอย่าลืมใส่
rel="noopener"
ใน
<a>
มาร์กอัป Anchor หรือเพิ่ม
noopener
ไปยัง
รายการฟีเจอร์ฟังก์ชันการทำงานของหน้าต่าง Window.open()
รายการ
start
ในรูปแบบที่ง่ายที่สุด ไวยากรณ์ของส่วนย่อยข้อความมีดังนี้: สัญลักษณ์แฮช #
แล้วตามด้วย
:~:text=
และสุดท้ายคือ start
ซึ่งแสดงถึง
เข้ารหัสด้วยเปอร์เซ็นต์
ข้อความที่ฉันต้องการลิงก์ไป
#:~:text=start
ตัวอย่างเช่น สมมติว่าฉันต้องการลิงก์กับส่วนหัว ECMAScript Modules in Web Workers ใน บล็อกโพสต์แจ้งฟีเจอร์ต่างๆ ใน Chrome 80 URL ในกรณีนี้จะเป็น
ส่วนข้อความจะเน้นแบบนี้ หากคุณคลิกลิงก์ในเบราว์เซอร์ที่รองรับ เช่น Chrome ส่วนข้อความจะถูกไฮไลต์ เลื่อนเข้ามาในมุมมอง
start
และ end
ทีนี้หากฉันต้องการลิงก์ไปยังทั้งส่วนที่ชื่อว่าโมดูล ECMAScript ใน Web Workers ไม่ใช่ แค่ส่วนหัว การเข้ารหัสเปอร์เซ็นต์ข้อความทั้งหมดของส่วนจะทำให้ผลลัพธ์ URL นานอย่างไม่น่าเชื่อ
โชคดีที่มีวิธีที่ดีกว่า แทนที่จะใช้ข้อความทั้งหมด ฉันสามารถจัดกรอบข้อความที่ต้องการได้โดยใช้
ไวยากรณ์ start,end
ดังนั้น ฉันจะระบุคำที่เข้ารหัสเปอร์เซ็นต์ไว้สัก 2-3 คำในช่วงต้น
ของข้อความที่ต้องการ และคำที่เข้ารหัสด้วยเปอร์เซ็นต์ 2-3 คำไว้ที่ท้ายข้อความที่ต้องการโดยแยกจากกัน
โดยใช้คอมมา ,
ซึ่งมีลักษณะดังนี้
สำหรับ start
ฉันมี ECMAScript%20Modules%20in%20Web%20Workers
แล้วตามด้วยคอมมา ,
โดย ES%20Modules%20in%20Web%20Workers.
ในชื่อ end
เมื่อคุณคลิกผ่านในเบราว์เซอร์ที่รองรับ
เช่นเดียวกับ Chrome ระบบจะไฮไลต์ทั้งส่วนและเลื่อนเข้ามาในมุมมอง
ตอนนี้คุณอาจสงสัยเกี่ยวกับตัวเลือก start
และ end
ของฉัน อันที่จริง URL ที่สั้นกว่าเล็กน้อย
https://blog.chromium.org/2019/12/chrome-80-content-indexing-es-modules.html#:~:text=ECMAScript%20Modules,Web%20Workers.
โดยใช้เพียง 2 คำในแต่ละด้าน ก็น่าจะใช้ได้ผลเช่นกัน เปรียบเทียบ start
และ end
กับ
ค่าก่อนหน้า
ถ้าฉันก้าวไปอีกขั้นและตอนนี้ใช้เพียงคำเดียวสำหรับทั้ง start
และ end
คุณจะสามารถ
เห็นผมกำลังมีปัญหาอยู่ URL
https://blog.chromium.org/2019/12/chrome-80-content-indexing-es-modules.html#:~:text=ECMAScript,Workers.
ยิ่งสั้นลงไปอีก แต่ส่วนย่อยข้อความที่ไฮไลต์ไม่ใช่ส่วนเดิมที่คุณต้องการแล้ว
การไฮไลต์หยุดที่คำแรกที่คำว่า Workers.
ซึ่งถูกต้อง แต่ไม่ใช่สิ่งที่ฉันทำ
ที่ตั้งใจจะไฮไลต์ ปัญหาคือส่วนที่ต้องการไม่ได้รับการระบุโดย
ค่า start
และ end
แบบคำเดียวปัจจุบัน:
prefix-
และ -suffix
การใช้ค่าที่นานพอสำหรับ start
และ end
เป็นโซลูชันหนึ่งสำหรับการได้รับลิงก์ที่ไม่ซ้ำกัน
อย่างไรก็ตาม อาจเป็นไปไม่ได้ในบางสถานการณ์ อีกอย่างคือ ทำไมฉันถึงเลือก
บล็อกโพสต์ของ Chrome 80 เป็นตัวอย่างของฉันใช่ไหม คำตอบคือ Fragments ในข้อความของรุ่นนี้
แนะนำ:
สังเกตว่าในภาพหน้าจอเหนือคำว่า "ข้อความ" ปรากฏ 4 ครั้ง รายการที่สี่คือ
ที่เขียนด้วยตัวอักษรรหัสสีเขียว หากต้องการเชื่อมโยงกับคำนี้โดยเฉพาะ ฉันควรตั้งค่า start
ไปยัง text
เนื่องจากคำว่า "ข้อความ" บอกได้เพียงคำเดียว ต้องไม่มี end
ต้องทำอย่างไร
URL
https://blog.chromium.org/2019/12/chrome-80-content-indexing-es-modules.html#:~:text=text
ตรงกับที่ปรากฏครั้งแรกของคำว่า "ข้อความ" อยู่ในส่วนหัวแล้ว:
โชคดีที่มีวิธีแก้ไขแล้ว ในกรณีเช่นนี้ ฉันสามารถระบุ prefix-
และ -suffix
คำก่อนรหัสสีเขียวตัวอักษร "ข้อความ" คือ "the" และคำหลังคือ "parameter" ไม่ตรงกับตัวเลือกใดๆ
คำว่า "ข้อความ" อีก 3 ครั้ง มีคำโดยรอบเหมือนกัน ติดอาวุธ
เราสามารถปรับแต่ง URL ก่อนหน้า และเพิ่ม prefix-
และ -suffix
ได้ ชอบอีก
และจะต้องเข้ารหัสเปอร์เซ็นต์และอาจมีคำได้มากกว่า 1 คำ
https://blog.chromium.org/2019/12/chrome-80-content-indexing-es-modules.html#:~:text=the-,text,-parameter
หากต้องการให้โปรแกรมแยกวิเคราะห์สามารถระบุ prefix-
และ -suffix
ได้อย่างชัดเจน จะต้องแยกกัน
จาก start
และ end
ที่ไม่บังคับมีเครื่องหมายขีดกลาง -
ไวยากรณ์แบบเต็ม
ไวยากรณ์แบบเต็มของส่วนย่อยข้อความแสดงอยู่ด้านล่าง (วงเล็บเหลี่ยมหมายถึงพารามิเตอร์ที่ไม่บังคับ)
ค่าสำหรับพารามิเตอร์ทั้งหมดต้องเข้ารหัสเปอร์เซ็นต์ ซึ่งสำคัญมากสำหรับขีดคั่น
-
, เครื่องหมายแอมเพอร์แซนด์ &
และเครื่องหมายจุลภาค ,
อักขระ ระบบเพื่อไม่ให้ตีความเป็นส่วนหนึ่งของข้อความ
ไวยากรณ์คำสั่ง
#:~:text=[prefix-,]start[,end][,-suffix]
prefix-
, start
, end
และ -suffix
แต่ละรายการจะจับคู่ข้อความภายในโดเมนเดียวเท่านั้น
องค์ประกอบระดับบล็อก
แต่ช่วง start,end
แบบเต็มสามารถครอบคลุมหลายบล็อก ตัวอย่างเช่น
:~:text=The quick,lazy dog
จะจับคู่ไม่สำเร็จในตัวอย่างต่อไปนี้ เนื่องจากแท็กเริ่มต้น
สตริง "ทางลัด" ไม่ปรากฏภายในองค์ประกอบระดับบล็อกเดียวแบบไม่ขาดตอน
<div>
The
<div></div>
quick brown fox
</div>
<div>jumped over the lazy dog</div>
แต่จะตรงกับในตัวอย่างนี้
<div>The quick brown fox</div>
<div>jumped over the lazy dog</div>
การสร้าง URL ส่วนย่อยข้อความด้วยส่วนขยายของเบราว์เซอร์
การสร้าง URL ส่วนย่อยข้อความด้วยตนเองนั้นน่าเบื่อหน่าย โดยเฉพาะเมื่อต้องตรวจสอบว่า ไม่ซ้ำกัน หากคุณต้องการจริงๆ ข้อกำหนดจะมีเคล็ดลับบางอย่างและแสดง ขั้นตอนในการสร้าง URL ส่วนย่อยข้อความ เรามีส่วนขยายเบราว์เซอร์แบบโอเพนซอร์สชื่อ ลิงก์ไปยังส่วนข้อความที่ช่วยให้คุณ ลิงก์ไปยังข้อความใดก็ได้โดยการเลือกข้อความ แล้วคลิก "คัดลอกลิงก์ไปยังข้อความที่เลือก" ในบริบท เมนู ส่วนขยายนี้ใช้งานได้กับเบราว์เซอร์ต่อไปนี้
- ลิงก์ไปยังส่วนข้อความสำหรับ Google Chrome
- ลิงก์ไปยังส่วนย่อยข้อความของ Microsoft Edge
- ลิงก์ไปยังส่วนข้อความของ Mozilla Firefox
- ลิงก์ไปยังส่วนข้อความของ Apple Safari
ส่วนย่อยของข้อความหลายส่วนใน URL เดียว
โปรดทราบว่าส่วนย่อยข้อความหลายรายการอาจปรากฏใน URL เดียว ส่วนย่อยของข้อความโดยเฉพาะจะต้อง
คั่นด้วยอักขระแอมเพอร์แซนด์ &
ต่อไปนี้คือตัวอย่างลิงก์ที่มีส่วนย่อยข้อความ 3 ส่วน
https://blog.chromium.org/2019/12/chrome-80-content-indexing-es-modules.html#:~:text=Text%20URL%20Fragments&text=text,-parameter&text=:~:text=On%20islands,%20birds%20can%20contribute%20as%20much%20as%2060%25%20of%20a%20cat's%20diet
การรวมองค์ประกอบและส่วนย่อยข้อความ
คุณสามารถรวมส่วนย่อยขององค์ประกอบแบบเดิมกับส่วนย่อยข้อความได้ เป็นเรื่องดีที่จะมีทั้ง 2 อย่าง
ไว้ใน URL เดียวกัน เช่น เพื่อเป็นทางเลือกที่มีความหมายในกรณีที่ข้อความต้นฉบับบนหน้าเว็บ
เปลี่ยนแปลง เพื่อให้ส่วนข้อความไม่ตรงอีกต่อไป URL
https://blog.chromium.org/2019/12/chrome-80-content-indexing-es-modules.html#HTML1:~:text=Give%20us%20feedback%20in%20our%20Product%20Forums.
ซึ่งลิงก์ไปยังเว็บไซต์
ส่วนฟอรัมผลิตภัณฑ์
มีทั้งส่วนย่อยขององค์ประกอบ (HTML1
) และส่วนย่อยข้อความ
(text=Give%20us%20feedback%20in%20our%20Product%20Forums.
):
คำสั่ง Fragment
มีองค์ประกอบหนึ่งของไวยากรณ์ที่ฉันยังไม่ได้อธิบายคือ คำสั่ง Fragment :~:
วิธีหลีกเลี่ยง
ปัญหาความเข้ากันได้กับส่วนย่อยขององค์ประกอบ URL ที่มีอยู่ดังที่แสดงด้านบน
ข้อกำหนด Fragment ของข้อความจะแนะนำส่วนย่อย
คำสั่ง คำสั่งส่วนย่อยคือส่วนหนึ่งของส่วนย่อย URL ที่คั่นด้วยลำดับโค้ด
:~:
สงวนไว้สำหรับคำสั่งของ User Agent เช่น text=
และถูกตัดออกจาก URL
ในระหว่างการโหลด เพื่อให้สคริปต์ของผู้เขียนไม่สามารถโต้ตอบได้โดยตรง วิธีการของ User Agent คือ
หรือที่เรียกว่าคำสั่ง ซึ่งในกรณีนี้ text=
จะเรียกว่าคำสั่งข้อความ
การตรวจหาฟีเจอร์
หากต้องการตรวจหาการสนับสนุน ให้ทดสอบพร็อพเพอร์ตี้ fragmentDirective
แบบอ่านอย่างเดียวใน document
ส่วนย่อย
เป็นกลไกสำหรับ URL ในการระบุคำสั่งที่มุ่งไปที่เบราว์เซอร์แทนคำสั่ง
เอกสาร เพื่อหลีกเลี่ยงการโต้ตอบกับสคริปต์ของผู้เขียนโดยตรง เพื่อให้ User Agent ในอนาคต
สามารถเพิ่มได้โดยไม่ต้องกังวลว่าจะมีการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ หนึ่ง
ตัวอย่างที่เป็นไปได้ของส่วนที่เพิ่มมาในอนาคต
ก็เช่น คำแนะนำในการแปล
if ('fragmentDirective' in document) {
// Text Fragments is supported.
}
การตรวจหาคุณลักษณะมีจุดประสงค์หลักในกรณีที่มีการสร้างลิงก์แบบไดนามิก (ตัวอย่างเช่น เครื่องมือค้นหา) เพื่อหลีกเลี่ยงการแสดงส่วนข้อความลิงก์ไปยังเบราว์เซอร์ที่ไม่รองรับ
การจัดรูปแบบส่วนย่อยข้อความ
โดยค่าเริ่มต้น เบราว์เซอร์จะจัดรูปแบบส่วนย่อยข้อความด้วยวิธีเดียวกับการจัดรูปแบบ
mark
(โดยปกติจะเป็นสีดำบนพื้นสีเหลือง
สีของระบบ CSS
สำหรับ mark
) สไตล์ชีตของ User Agent มี CSS ที่มีลักษณะดังนี้
:root::target-text {
color: MarkText;
background: Mark;
}
ดังที่คุณเห็น เบราว์เซอร์แสดงตัวเลือกเทียม
::target-text
ที่ใช้เพื่อวัตถุประสงค์ต่อไปนี้
ปรับแต่งการไฮไลต์ที่ใช้ เช่น คุณอาจออกแบบส่วนย่อยของข้อความให้เป็นสีดำ
ข้อความบนพื้นหลังสีแดง และเช่นเคย
ตรวจสอบคอนทราสต์ของสี
การจัดรูปแบบการลบล้างของคุณไม่ทำให้เกิดปัญหาในการเข้าถึง และตรวจสอบว่าการไฮไลต์
โดดเด่นออกมาจากเนื้อหาที่เหลือ
:root::target-text {
color: black;
background-color: red;
}
ความสามารถในการเติมสี
ฟีเจอร์ส่วนย่อยข้อความสามารถใส่รูปหลายเหลี่ยมได้บางส่วน เรามี polyfill ซึ่งใช้ภายในโดย ส่วนขยายสำหรับเบราว์เซอร์ที่ไม่ ให้การรองรับในตัวสำหรับ Fragment ข้อความซึ่งมีการใช้ฟังก์ชันใน JavaScript
การสร้างลิงก์ส่วนย่อยข้อความแบบเป็นโปรแกรม
polyfill มีไฟล์
fragment-generation-utils.js
ที่คุณสามารถนำเข้าและใช้เพื่อสร้างลิงก์ส่วนย่อยข้อความ นี่คือ
ซึ่งแสดงในตัวอย่างโค้ดด้านล่าง
const { generateFragment } = await import('https://unpkg.com/text-fragments-polyfill/dist/fragment-generation-utils.js');
const result = generateFragment(window.getSelection());
if (result.status === 0) {
let url = `${location.origin}${location.pathname}${location.search}`;
const fragment = result.fragment;
const prefix = fragment.prefix ?
`${encodeURIComponent(fragment.prefix)}-,` :
'';
const suffix = fragment.suffix ?
`,-${encodeURIComponent(fragment.suffix)}` :
'';
const start = encodeURIComponent(fragment.textStart);
const end = fragment.textEnd ?
`,${encodeURIComponent(fragment.textEnd)}` :
'';
url += `#:~:text=${prefix}${start}${end}${suffix}`;
console.log(url);
}
การรับส่วนย่อยข้อความเพื่อวัตถุประสงค์ในการวิเคราะห์
เว็บไซต์จำนวนมากใช้ส่วนย่อยในการกำหนดเส้นทาง ซึ่งเป็นเหตุผลที่เบราว์เซอร์ตัดส่วนย่อยข้อความออก เพื่อไม่ให้เกิดการทำลายหน้าเหล่านั้น มี เป็นที่ยอมรับแล้ว เพื่อแสดงลิงก์ Fragment ข้อความในหน้าเว็บ ตัวอย่างเช่น เพื่อวัตถุประสงค์ในการวิเคราะห์ แต่ยังไม่ได้นำโซลูชันที่เสนอมาใช้ เพื่อเป็นการแก้ปัญหาเฉพาะหน้า ก็ใช้โค้ดด้านล่างเพื่อดึงข้อมูล ข้อมูลที่ต้องการ
new URL(performance.getEntries().find(({ type }) => type === 'navigate').name).hash;
ความปลอดภัย
คำสั่งส่วนย่อยข้อความจะเรียกใช้เฉพาะในการไปยังส่วนต่างๆ แบบเต็ม (ไม่ใช่หน้าเดียวกัน) ซึ่งเป็นผลมาจาก
a
การเปิดใช้งานผู้ใช้
นอกจากนี้ การนำทางจากต้นทางต่างจากปลายทางจะต้อง
ใน
บริบทของ noopener
เช่น
ทำให้ทราบว่าหน้าปลายทางนั้นแยกออกจากกันเพียงพอ คำสั่งส่วนย่อยข้อความเท่านั้น
ใช้กับเฟรมหลักแล้ว ซึ่งหมายความว่าจะไม่มีการค้นหาข้อความภายใน iframe และ iframe
การนำทางจะไม่เรียกใช้ส่วนย่อยข้อความ
ความเป็นส่วนตัว
สิ่งสำคัญคือการใช้งานข้อกำหนด Fragments ข้อความต้องไม่ทำให้ข้อความหลุด
พบ Fragment ในหน้าหรือไม่พบ ขณะที่ส่วนย่อยองค์ประกอบอยู่ภายใต้การควบคุมของ
ผู้เขียนหน้าเว็บต้นฉบับ ทุกคนสามารถสร้างส่วนย่อยข้อความได้ โปรดจดจำวิธีในตัวอย่างข้างต้น
ไม่มีวิธีลิงก์ไปยังส่วนหัวโมดูล ECMAScript ใน Web Workers เนื่องจาก <h1>
ใช้ลิงก์
ไม่มี id
แต่ทุกคนรวมถึงผม จะสามารถลิงก์ไปที่ใดก็ได้ ด้วยการสร้างสรรค์อย่างพิถีพิถัน
ส่วนข้อความคืออะไร
สมมติว่าฉันใช้งานเครือข่ายโฆษณาที่ชั่วร้าย evil-ads.example.com
ลองคิดต่อว่าในโฆษณาของฉัน
iframes ฉันสร้าง iframe แบบข้ามต้นทางแบบไดนามิกไปยัง dating.example.com
ด้วยข้อความ
URL ของ Fragment
วันที่ dating.example.com#:~:text=Log%20Out
เมื่อผู้ใช้โต้ตอบกับโฆษณา หากข้อความ "ออกจากระบบ" พบแล้ว ผมทราบว่าเหยื่อกำลัง
เข้าสู่ระบบ dating.example.com
ซึ่งฉันสามารถใช้สำหรับทำโปรไฟล์ผู้ใช้ได้ ตั้งแต่ข้อความไร้เดียงสา
การใช้ Fragment อาจช่วยให้การจับคู่ที่ประสบความสำเร็จควรสร้างสวิตช์โฟกัส
evil-ads.example.com
ฉันสามารถฟังเหตุการณ์ blur
จึงรู้ได้เมื่อมีการแข่งขัน ใน
เราได้นำส่วนข้อความมาใช้ใน Chrome ในลักษณะที่สถานการณ์ข้างต้นไม่สามารถทำได้
การโจมตีอีกอย่างหนึ่งอาจเป็นการแสวงหาประโยชน์จากการจราจรของข้อมูลในเครือข่ายตามตำแหน่งการเลื่อน สมมติว่าฉันมีสิทธิ์เข้าถึง
บันทึกการจราจรของข้อมูลในเครือข่ายของเหยื่อ เช่น ในฐานะผู้ดูแลระบบอินทราเน็ตของบริษัท ทีนี้ลองนึกภาพตรงนั้น
มีเอกสารด้านทรัพยากรบุคคลขนาดยาว สิ่งที่ต้องทำหากคุณทรมานจาก... และมีรายการ
เช่น หมดไฟ วิตกกังวล ฯลฯ ฉันสามารถวางพิกเซลการติดตามไว้ข้างแต่ละรายการใน
รายการ ถ้าผมพบว่าการโหลดเอกสาร
จะเกิดขึ้นร่วมกับการโหลดเอกสาร
พิกเซลการติดตามที่อยู่ข้างๆ รายการที่หมดไฟ ผมจึงสามารถตรวจสอบ ในฐานะผู้ดูแลระบบอินทราเน็ต
พนักงานได้คลิกลิงก์ส่วนย่อยข้อความที่มี :~:text=burn%20out
ซึ่งพนักงานดังกล่าว
อาจถือได้ว่าเป็นความลับและไม่มีใครมองเห็น เนื่องจากตัวอย่างนี้ค่อนข้าง
เพื่อเริ่มต้น และเนื่องจากการแสวงหาประโยชน์นี้ต้องอาศัยเงื่อนไขเบื้องต้นที่เฉพาะเจาะจงอย่างมาก
ทีมความปลอดภัยของ Chrome ได้ประเมินความเสี่ยงในการใช้การเลื่อนในการนำทางเพื่อให้จัดการได้
User Agent อื่นๆ อาจเลือกที่จะแสดงองค์ประกอบ UI การเลื่อนด้วยตนเองแทน
สำหรับเว็บไซต์ที่ต้องการเลือกไม่ใช้ Chromium รองรับ นโยบายเกี่ยวกับเอกสาร ค่าส่วนหัวที่ส่งได้เพื่อที่ User Agent จะไม่ประมวลผล URL ส่วนย่อยข้อความ
Document-Policy: force-load-at-top
การปิดใช้ส่วนข้อความ
วิธีที่ง่ายที่สุดในการปิดใช้ฟีเจอร์คือการใช้ส่วนขยายที่สามารถแทรกการตอบสนอง HTTP เช่น ModHeader (ไม่ใช่ผลิตภัณฑ์ของ Google) เพื่อแทรกส่วนหัวการตอบกลับ (ไม่ใช่คำขอ) ดังนี้
Document-Policy: force-load-at-top
อีกวิธีที่เกี่ยวข้องมากขึ้นในการเลือกไม่ใช้คือการใช้การตั้งค่าองค์กร
ScrollToTextFragmentEnabled
หากต้องการดำเนินการใน macOS ให้วางคำสั่งด้านล่างในเทอร์มินัล
defaults write com.google.Chrome ScrollToTextFragmentEnabled -bool false
ใน Windows ให้ทำตามเอกสารประกอบเกี่ยวกับ การสนับสนุนความช่วยเหลือเกี่ยวกับ Google Chrome Enterprise ของคุณ
ส่วนย่อยของข้อความในการค้นหาเว็บ
สำหรับการค้นหาบางอย่าง เครื่องมือค้นหาที่ Google จะให้คำตอบหรือข้อมูลสรุปสั้นๆ พร้อมเนื้อหา จากเว็บไซต์ที่เกี่ยวข้อง ตัวอย่างข้อมูลแนะนำเหล่านี้มีแนวโน้มที่จะปรากฏขึ้นเมื่อทำการค้นหา อยู่ในรูปแบบของคำถาม การคลิกตัวอย่างข้อมูลแนะนำจะนำผู้ใช้ไปยังหน้าแนะนำโดยตรง ตัวอย่างข้อความในหน้าเว็บแหล่งที่มา ซึ่งสามารถทำได้ด้วย URL ส่วนย่อยข้อความที่สร้างขึ้นโดยอัตโนมัติ
บทสรุป
URL ส่วนย่อยข้อความเป็นฟีเจอร์ที่มีประสิทธิภาพในการลิงก์ไปยังข้อความที่กำหนดเองบนหน้าเว็บ นักวิชาการ สามารถใช้ URL นี้ในการให้การอ้างอิงที่ถูกต้องแม่นยำสูงหรือลิงก์อ้างอิงได้ เครื่องมือค้นหาสามารถใช้ เป็น Deep Link ไปยังผลการค้นหาข้อความในหน้าเว็บ เว็บไซต์โซเชียลเน็ตเวิร์กสามารถใช้เพื่อให้ผู้ใช้แชร์ ข้อความของหน้าเว็บบางอย่าง แทนที่จะเป็นภาพหน้าจอที่ไม่สามารถเข้าถึงได้ ฉันหวังว่าคุณจะเริ่ม การใช้ URL ส่วนย่อยข้อความ ว่ามีประโยชน์เหมือนผมเลย อย่าลืมติดตั้ง เบราว์เซอร์ลิงก์ไปยังส่วนย่อยข้อความ ส่วนขยาย
ลิงก์ที่เกี่ยวข้อง
- ร่างข้อกำหนด
- ตรวจสอบแท็ก
- รายการสถานะ Chrome Platform
- ข้อบกพร่องในการติดตามของ Chrome
- ความตั้งใจที่จะจัดส่งชุดข้อความ
- ชุดข้อความของ WebKit-Dev
- ชุดข้อความตำแหน่งมาตรฐานของ Mozilla
กิตติกรรมประกาศ
มีการนำส่วนย่อยข้อความไปใช้และระบุโดย Nick Burris และ David Bokan ด้วยการสนับสนุนจาก Grant Wang ขอขอบคุณ Joe Medley การตรวจสอบบทความนี้อย่างละเอียด รูปภาพหลักโดย Greg Rakozy ใน หน้าจอแนะนํา