เหตุใด CTRL คลิกไม่เปิดบางลิงก์ในแท็บใหม่


18

บางครั้งขณะเรียกดูฉันจะกดปุ่ม ctrl เพื่อเปิดในแท็บใหม่ อย่างไรก็ตามแทนที่จะเปิดในแท็บใหม่จะได้รับการคลิกและเรียกดูในแท็บปัจจุบันราวกับว่าฉันได้คลิกตามปกติโดยไม่ต้องกดปุ่ม Ctrl ฉันแน่ใจว่าฉันถือ ctrl ลงจนสุดและไม่มีข้อผิดพลาดกับแป้นพิมพ์หรือเมาส์

ในบางครั้งแท็บใหม่จะถูกเปิดพร้อมกับลิงก์ แต่แท็บปัจจุบันจะเรียกดูไปที่ลิงก์พร้อมกัน


3
บางทีพวกเขาอาจจะไม่ใช่ลิงค์จริงในแง่ที่ว่า "ลิงก์" อาจใช้การonclickดำเนินการที่อาจยุ่งกับ ctrl + คลิก คุณสามารถยกตัวอย่างที่เฉพาะเจาะจงได้หรือไม่? meta.stackoverflow.com/questions/276138/…
imtheman

@imtheman จุดดี แต่มันไม่ได้เป็นอย่างน้อยในตัวอย่างที่ฉันเคยเห็น ฉันรู้สิ่งนี้เพราะฉันวางเมาส์ไว้เหนือลิงก์ก่อนเสมอเพื่อตรวจสอบว่ามีการแสดง URL ในแถบสถานะ ตัวอย่างอยู่ที่นี่: nationaljournal.com/white-house/… ในคอลัมน์ / บาร์ lefthand ลิงก์ไปยังเรื่องราวอื่น ๆ ดูเหมือนจะเป็น URL ของตัวเองตรวจสอบโดยการกระโดดไปยังตำแหน่งในแหล่งที่มาอย่างไรก็ตามการคลิก ctrl ไม่ได้ ใช้งานแทนการทำราวกับว่าไม่มี ctrl อยู่
Coldblackice

หากคุณดูซอร์สโค้ดสำหรับไซต์นั้นคุณจะเห็นสิ่งนี้สำหรับลิงก์ใดลิงก์หนึ่ง:<a class="primary" href="/superuser//congress" onclick="var x=&quot;.tl(&quot;;s_objectID=&quot;http://www.nationaljournal.com/congress_1&quot;;return this.s_oc?this.s_oc(e):true">Congress</a>
imtheman

1
ในขณะที่มันมีhrefคุณลักษณะมันถูกเขียนทับโดยเหตุการณ์ onclick
imtheman

1
ฉันเขียนส่วนเสริมของ Firefox เพื่อแก้ไขปัญหานี้ github.com/danielnixon/link-fixer
danielnixon

คำตอบ:


8

JavaScript อยู่เบื้องหลัง

สิ่งนี้จะเกิดขึ้นเมื่อนักพัฒนาของหน้าเว็บดังกล่าวสกัดกั้นการคลิกเมาส์ด้วย JavaScript และทำการร้องขอเครือข่ายแบบอะซิงโครนัสภายในตัวดักซึ่งอาจติดตามการคลิกของคุณ เมื่อการเรียกเครือข่าย async กลับมา JS จะทำการเปลี่ยนเส้นทางแบบเป็นโปรแกรมโดยใช้สิ่งต่อไปนี้:window.location.href = url;

การเปลี่ยนเส้นทางแบบเป็นโปรแกรมนี้จะโหลดหน้าเว็บในแท็บเดียวกันเสมอแม้ว่าคุณจะถือCtrl( Cmdใน Mac)

ใช้ MiddleMouse เพื่อแทนที่

การคลิกปุ่มกลางบนเมาส์ของคุณหรือเลือก'เปิดในแท็บใหม่'จากเมนูบริบทจะบายพาสโค้ด JavaScript ทั้งหมดและจะเปิดลิงก์ราวกับว่าไม่มีโค้ด JavaScript เลย


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

6

ฉันเขียนโปรแกรมเสริม Firefox (น่าเบื่อ) ชื่อlink-fixerเพื่อแก้ไขปัญหานี้ คุณสามารถติดตั้งจาก addons.mozilla.org ต้องใช้ Firefox 48.0 หรือใหม่กว่า

อ้างตัวเอง:

พฤติกรรมเริ่มต้นของ ctrl + คลิก, เปลี่ยน + คลิกและ cmd + คลิกเมื่อคลิกที่ลิงก์คือการเปิดลิงก์ในแท็บใหม่หรือหน้าต่างใหม่ พฤติกรรมนี้บางครั้งเสียโดยผู้พัฒนาที่ไม่ประมาท ส่วนเสริมนี้จะคืนค่าการทำงานเริ่มต้นทำให้มั่นใจได้ว่าคีย์ modifer จะได้รับการเคารพเสมอ

เมื่อติดตั้งแล้วคุณไม่จำเป็นต้องทำอะไรอีก คุณสามารถ ctrl + คลิกที่ลิงก์ใดก็ได้และมันจะเปิดขึ้นในแท็บใหม่ นอกจากนี้ยังจะช่วยแก้ไขปัญหาที่คุณอธิบายไว้ในย่อหน้าที่สอง


1
สวัสดีแดเนียลในขณะที่มันยอดเยี่ยมที่คุณเขียนบางสิ่งบางอย่างเพื่อแก้ไขปัญหานี้คุณสามารถอ่านวิธีการแนะนำซอฟต์แวร์ในคำตอบโดยเฉพาะอย่างยิ่งชิ้นส่วนที่เป็นตัวหนาและอัปเดตคำตอบของคุณได้ไหม? ขอบคุณ :)
bertieb

3

ให้ใช้ลิงค์นี้เป็นตัวอย่าง:

<a href="test.php" onclick="someFunction(this); return false;">Test</a>

hrefแอตทริบิวต์ในกรณีนี้คือการสร้างการเชื่อมโยงหลอกสำหรับการอ่าน (มันยังจะช่วยให้การเชื่อมโยงการทำงานแม้ว่า JavaScript เป็นคนพิการ) เหตุผลนี้เป็นเพราะonclickแอตทริบิวต์จะทำงานก่อนเสมอ ไซต์ขนาดใหญ่เช่น Google ทำสิ่งนี้เพื่อติดตามการคลิกและพยายามป้องกันไม่ให้ผู้ใช้เยี่ยมชมไซต์มัลแวร์ ด้วยเหตุนี้Ctrl+ Click ด้วยเหตุผลบางอย่างไม่ทำงาน อย่างไรก็ตามหากคุณใช้ปุ่มกลางบนเมาส์ของคุณก็จะใช้งานได้เกือบทุกครั้ง


1
พยายามที่จะหา-กลางของเมาส์บน Mac
Eduard

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