ป้องกันไม่ให้ Safari แสดงคำแนะนำเครื่องมือเมื่อมีการซ่อนข้อความล้นด้วยจุดไข่ปลา

ฉันจะลบคำแนะนำเครื่องมือเริ่มต้นของเบราว์เซอร์ที่แสดงเมื่อวางเมาส์เหนือข้อความที่ถูกตัดทอนในลิงก์ได้อย่างไร

ข้อความถูกตัดทอนเนื่องจากกฎจุดไข่ปลา css :

text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;

เมื่อฉันใช้กฎเหล่านี้กับ div ที่มีความกว้างคงที่ ฉันจะได้รับคำแนะนำเครื่องมือ html (เฉพาะใน Safari ไม่ใช่ใน Firefox หรือ Chrome)

นี่คือ jsfiddle

ฉันพยายามเพิ่ม JS preventDefault และเพิ่มแอตทริบิวต์ title ที่ว่างเปล่า แต่ไม่มีสิ่งใดที่ใช้งานได้


person Vincent Duprez    schedule 07.01.2014    source แหล่งที่มา
comment
ซอของคุณไม่ได้ตั้งค่าอย่างถูกต้อง ... เดาว่าเป็นประเภท OSX โดยไม่เห็นคำแนะนำเครื่องมือบน windows   -  person epascarello    schedule 07.01.2014
comment
@epascarello คุณได้ลองซาฟารีบน windows แล้วหรือยัง?   -  person Vincent Duprez    schedule 07.01.2014
comment
ไม่ได้ติดตั้งมาหลายปีแล้ว ... คุณลองตั้งค่าแอตทริบิวต์ชื่อว่างในองค์ประกอบหรือไม่   -  person epascarello    schedule 07.01.2014
comment
ใช่ ฉันพยายามแล้ว.. ไม่มีผลลัพธ์   -  person Vincent Duprez    schedule 07.01.2014
comment
คุณพบวิธีแก้ไข/วิธีแก้ปัญหาเพื่อป้องกันคำแนะนำเครื่องมือดั้งเดิมหรือไม่ กรุณาแบ่งปันในกรณี.   -  person manoj    schedule 08.07.2014
comment
ไม่ ฉันไม่พบวิธีแก้ปัญหาเลย   -  person Vincent Duprez    schedule 08.07.2014
comment
@manoj โปรดค้นหาวิธีแก้ปัญหาในคำตอบของ hon2a ฉันรู้ว่าฉันช้าไป 6 ปี แต่ก็ยัง... :P   -  person Allan Jebaraj    schedule 25.09.2020


คำตอบ (5)


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

วิธีแก้ปัญหาเบื้องต้น ให้เพิ่มองค์ประกอบบล็อกว่างภายในองค์ประกอบที่มีการโอเวอร์โฟลว์ซ่อนอยู่ด้วย text-overflow: ellipsis สิ่งนี้สามารถทำได้จริงตามที่คำตอบของ @bas แสดงไว้แล้วหรือโดยการสร้างองค์ประกอบหลอกด้วย CSS:

&::after {
  content: '';
  display: block;
}

(ใช้ไวยากรณ์ SCSS) หากคุณใช้ Sass และสร้างมิกซ์อินที่ห่อหุ้มการซ่อนข้อความที่ล้นด้วยจุดไข่ปลา นี่อาจเป็นส่วนเสริมที่ดีโดยไม่จำเป็นต้องมาร์กอัป HTML เพิ่มเติมใดๆ

person hon2a    schedule 11.05.2017
comment
ควรใช้ ::after แทน ::before ไม่เช่นนั้น overflow & text-overflow ของคอนเทนเนอร์จะไม่ทำงานบน IE และ Edge - person pallxk; 28.07.2017
comment
นี่ควรเป็นคำตอบที่ยอมรับได้ ใช่แล้ว ::after ควรใช้เพื่อให้ใช้ได้กับทุกเบราว์เซอร์ - person Allan Jebaraj; 25.09.2020
comment
@jfroy ฉันเพิ่งพบสาเหตุที่แท้จริงและสรุปวิธีแก้ไขเวอร์ชันใหม่ทั้งหมด แต่ถ้าฉันต้องเดา ฉันเดาว่าคำแนะนำเครื่องมือดั้งเดิมจะแสดงได้เพียง ข้อความ เท่านั้น และอนุมานได้จากเนื้อหาในบรรทัดอย่างปลอดภัยเท่านั้น - person hon2a; 21.10.2020

ฉันยังไม่ได้รับอนุญาตให้ใช้ pointer-events:none เพราะมันคือลิงก์ ฉันได้แรงบันดาลใจจากคำตอบของผู้ใช้ 1271033 ตัวอย่างไม่ได้ผลสำหรับฉัน แต่การเพิ่ม div ว่างก่อนที่ข้อความใน div ที่ถูกตัดทอนจะได้ผลสำหรับฉัน

ตัวอย่าง:

    <div style="text-overflow: ellipsis;white-space: nowrap; overflow: hidden;width:50px;">
         <div></div>
         Test test test
    </div>
person bas    schedule 03.02.2017

http://schoonc.blogspot.ru/2014/11/safari-text-overflow-ellipsis.html ? บางทีมันอาจจะเหมาะกับคุณ ตัวอย่าง:

<div class="text-container">longlonglonglongname</div>
.text-container {
    overflow: hidden;
    text-overflow: ellipsis;
    ...
    &:before {
        content: '';
        display: block;
    }

<div class="text-container" data-name="longlonglonglongname"></div>
 .text-container {
     overflow: hidden;
     text-overflow: ellipsis;
     ...
     &:before {
         content: attr(data-name);
     }
person user1271033    schedule 09.11.2014

คุณสามารถปิดใช้งานคำแนะนำเครื่องมือใน Safari ได้โดยตั้งค่าเหตุการณ์ตัวชี้: ไม่มี; ใน CSS โปรดทราบว่าการดำเนินการนี้จะปิดใช้งานกิจกรรมตัวชี้ทั้งหมด ดังนั้นหากเป็นลิงก์ ลิงก์ก็จะปิดใช้งานเช่นกัน

person stinogle    schedule 17.07.2014

เพิ่ม css ในรหัสของคุณ

 pointer-events: none;

แม้แต่คุณสามารถสร้าง CSS ใหม่สำหรับมันและนำไปใช้ได้ทุกที่ที่จำเป็น

คุณสามารถทำได้ด้วยวิธีนี้:

<div id="fix" title=""><a href="http://www.google.com"><span style="pointer-events:none;">Lorem ipsum dolor sit amet</span></a></div>

ลองดูสิ

https://jsfiddle.net/poojagayake/tx06vq09/1/

person Pooja-G    schedule 02.01.2017
comment
ขอบคุณสำหรับการขุด น่าเสียดายที่นี่คือลิงค์ ดังนั้นเคอร์เซอร์จึงต้องเห็นและถูกเสนอโดยคำตอบอื่นแล้ว - person Vincent Duprez; 02.01.2017
comment
@VincentDuprez ฉันใช้สิ่งนี้จาก span และมันใช้ได้ดีสำหรับฉัน ฉันคิดว่าคุณควรลองอย่างน้อยหนึ่งครั้ง - person Pooja-G; 02.01.2017
comment
ฉันรันโค้ดของคุณ jsfiddle บนเบราว์เซอร์ซาฟารี และมันทำงานจากฝั่งของฉัน - person Pooja-G; 03.01.2017
comment
ฉันกำลังพูดถึงลิงก์ ลิงก์ใช้งานไม่ได้อีกต่อไป - person Vincent Duprez; 03.01.2017