จะปิดการใช้งานการเชื่อมโยงหมายเลขโทรศัพท์ใน Mobile Safari ได้อย่างไร


363

Safari บน iPhone จะสร้างลิงก์สำหรับสตริงตัวเลขที่ปรากฏกับหมายเลขโทรศัพท์โดยอัตโนมัติ ฉันกำลังเขียนเว็บเพจที่มีที่อยู่ IP และ Safari กำลังเปลี่ยนให้เป็นลิงก์หมายเลขโทรศัพท์ เป็นไปได้หรือไม่ที่จะปิดการใช้งานพฤติกรรมนี้สำหรับทั้งหน้าหรือองค์ประกอบบนหน้า?


คำตอบ:


714

สิ่งนี้น่าจะเป็นสิ่งที่ถูกต้องตามข้อมูลอ้างอิงของSafari HTML :

<meta name="format-detection" content="telephone=no">

หากคุณปิดใช้งานสิ่งนี้ แต่ยังต้องการลิงค์โทรศัพท์คุณยังสามารถใช้รูปแบบ URI "tel" ได้

นี่คือหน้าที่เกี่ยวข้องที่ Library Developer ของ Apple


1
สิ่งนี้ใช้ไม่ได้ผล ไม่ใช่สำหรับเว็บแอปใน iOS 4.3.1 อยู่ดี
mhenry1384

5
4.2.1 บน iPhone ใช้งานได้; developer.apple.com/library/ios/#featuredarticles/…
Mark Brackett

2
แค่อยากทราบว่านี่ยังใช้ได้กับเวอร์ชั่นล่าสุดเช่น 5.1.1 ที่ฉันใช้อยู่
เดฟสไตน์

4
สามารถนำไปใช้เป็นกรณี ๆ ไปได้หรือไม่? ตัวอย่างเช่นสตริง 1 หมายเลขในหน้าฉันไม่ต้องการถูกตีความเป็นหมายเลขโทรศัพท์ แต่เก็บพฤติกรรมของคนอื่น ๆ 6 คนในหน้าเว็บที่ฉันต้องการตีความโดยอัตโนมัติเป็นหมายเลขโทรศัพท์หรือไม่
jpostdesign

3
มันทำงานได้อย่างสมบูรณ์แบบภายใต้ IOS 12 ในปี 2019! 👍🏻
Matt Komarnicki

38

หากต้องการปิดใช้งานการแยกวิเคราะห์ลักษณะโทรศัพท์สำหรับองค์ประกอบเฉพาะ CSS นี้ดูเหมือนจะใช้เคล็ดลับ:

.element { pointer-events: none; }
.element > a { text-decoration:none; color:inherit; }

กฎข้อแรกปิดการใช้งานการคลิกที่สองดูแลสไตล์


5
ทางออกที่ยอดเยี่ยมที่คุณต้องการ จำกัด สไตล์ / การจัดรูปแบบในสถานที่ที่เฉพาะเจาะจง
mikevoermans

36

ฉันใช้ช่างเชื่อมความกว้างเป็นศูนย์ &zwj;

เพียงแค่ใส่หมายเลขโทรศัพท์ลงไปและมันก็ใช้งานได้สำหรับฉัน ทดสอบใน BrowserStack (และสารสีน้ำเงินสำหรับอีเมล)


1
มันใช้งานได้สำหรับฉัน ฉันแค่เพิ่มก่อนเลขตัวแรก
vinboxx

1
ทางออกที่ดีที่สุด!
El cero

ฉันสร้างลายเซ็นอีเมล HTML และนี่เป็นโซลูชันเดียวที่ช่วยป้องกันอีเมล iOS 10 จากการตรวจจับหมายเลข (ที่ไม่ใช่โทรศัพท์) แอบอ้างว่าเป็นหมายเลขโทรศัพท์
Nick

1
ทางออกที่เรียบร้อย ทำงานได้ดีบน iPhone 6S (+) / iOS 9
Ain Tohvri

1
นี่เป็นวิธีการแก้ปัญหาเดียวที่สามารถใช้งานได้หากคุณขอให้ Mobile Safari โหลดไฟล์ XML ที่ใช้คำสั่ง <? xml-stylesheet> เพื่อสร้างหน้า HTML Mobile Safari แปลงหมายเลขยาว ๆ ใน XML ดั้งเดิมให้เป็นลิงก์ "tel:" แม้ว่าที่มานั้นไม่ใช่ HTML (!)
Mark Reinhold

33

ฉันมีปัญหาเดียวกัน ฉันพบคุณสมบัติบน UIWebView ที่ให้คุณปิดตัวตรวจจับข้อมูล

self.webView.dataDetectorTypes = UIDataDetectorTypeNone;

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

29

เพิ่มสิ่งนี้ฉันคิดว่ามันเป็นสิ่งที่คุณกำลังมองหา:

<meta name = "format-detection" content = "telephone=no">

10

ทางออกสำหรับ Webview!

สำหรับแอปพลิเคชัน PhoneGap-iPhone / PhoneGap-iOS คุณสามารถปิดใช้งานการตรวจจับหมายเลขโทรศัพท์ได้โดยการเพิ่มสิ่งต่อไปนี้ลงในผู้รับมอบสิทธิ์แอปพลิเคชันของโครงการของคุณ:

// ...

- (void)webViewDidStartLoad:(UIWebView *)theWebView 
{
    // disable telephone detection, basically <meta name="format-detection" content="telephone=no" />
    theWebView.dataDetectorTypes = UIDataDetectorTypeAll ^ UIDataDetectorTypePhoneNumber;

    return [ super webViewDidStartLoad:theWebView ];
}

// ...

แหล่งที่มา: ปิดการใช้งานการตรวจสอบโทรศัพท์ใน PhoneGap-iOS


ไปในการใช้รหัสของ awoodland ก่อนที่ฉันจะอ่านความคิดเห็น badger110 ดังนั้นฉันอยู่ใน AppDelegate.m เมื่อฉันเห็นสิ่งนี้เกิดขึ้นกับฉัน ฉันเริ่มมองไปรอบ ๆ ค้นหาช่องทำเครื่องหมายในไฟล์ xib และฉันคิดว่าฉันเพิ่งค้นพบสิ่งมหัศจรรย์ ฉันกลับมาโพสต์การค้นพบอันรุ่งโรจน์และค้นหาความคิดเห็นของ badger110 ที่นั่นตลอดเวลา TL DR: อ่านความคิดเห็นก่อน, คุณหัวนิ้ว
Tina D.

8

หากต้องการปิดใช้งานการตรวจจับหมายเลขโทรศัพท์ในส่วนของหน้าให้ห่อข้อความที่ได้รับผลกระทบในแท็กจุดยึดด้วย href = "#" หากคุณทำเช่นนี้มือถือ Safari และ UIWebView ควรปล่อยไว้ตามลำพัง

<a href="#"> 1234567 </a>

1
นี่คือสิ่งที่ฉันทำลงไปเนื่องจากmetaแท็กไม่ทำงาน อย่างไรก็ตามอาจทำได้ดีกว่าด้วย<a href="javascript:;">เพื่อป้องกันผลข้างเคียงจากการเปลี่ยน URL
JustJohn

สิ่งนี้ใช้ได้กับฉันในอีเมล HTML ฉันต้องการปิดการใช้งานหมายเลขโทรศัพท์หนึ่งหมายเลขเท่านั้นไม่ใช่ทั้งหมด ฉันเพิ่งเพิ่ม style = "text-decoration: none;" ไปที่แท็กที่มีสีเพื่อให้ตรงกับส่วนที่เหลือของข้อความและคุณสามารถเปลี่ยนลักษณะเคอร์เซอร์ได้เช่นกัน
Simon Darby

6

คิดว่าฉันพบวิธีแก้ปัญหาแล้ว: ใส่ตัวเลขไว้ใน<label>องค์ประกอบ ยังไม่ได้ลองแท็กอื่น ๆ แต่<div>ปล่อยให้มันใช้งานได้บนหน้าจอหลักแม้จะมีtelephone=noแอตทริบิวต์

ดูเหมือนว่าจะเห็นได้ชัดจากความคิดเห็นก่อนหน้านี้ว่าเมตาแท็กใช้งานได้ แต่ด้วยเหตุผลบางอย่างทำให้ iOS ในเวอร์ชันที่ใหม่กว่าแตกหักอย่างน้อยก็มีเงื่อนไขบางประการ ฉันใช้ 4.0.1


สวัสดีบ๊อบ หากคุณต้องการที่จะใส่ในตัวอย่างโค้ด HTML คุณต้องห่อรหัสใน <like this>backticks, (Stack Overflow ใช้ภาษาการจัดรูปแบบที่เรียกว่า Markdown) ฉันจะแก้ไขคำตอบของคุณตามนั้น
Paul D. Waite

ในที่สุดมันก็ไม่ทำงาน - เมื่อฉันโหลดแอพใหม่ลิงก์ hiliting ก็กลับมา ฉันได้หันไปใช้การเพิ่ม#อักขระที่ด้านหน้าของหมายเลขโทรศัพท์: ตามเอกสารของ Apple "การอ้างอิงโครงการ URL ของ Apple": "โดยเฉพาะถ้า URL มีอักขระ * หรือ # แอปพลิเคชันโทรศัพท์ไม่พยายามโทรหมายเลขที่สอดคล้องกัน หมายเลขโทรศัพท์."
BobFromBris

คุณควรลบคำตอบของคุณออกเพราะไม่ได้ผล ในขณะที่คุณเองรับทราบในความคิดเห็นข้างต้น
mhenry1384

@ บ๊อบเคล็ดลับสะอาดดี เราพบปัญหาเกี่ยวกับ HTML ในอีเมล การห่อป้ายกำกับใช้งานได้ดี +1 ขอบคุณ
geedubb

6

นอกจากนี้คุณยังสามารถใช้<a>ฉลากjavascript: void(0)เป็นhrefมูลค่า

ตัวอย่างดังต่อไปนี้:
<a href="javascript: void(0)">+44 456 77 89 87</a>


สิ่งนี้ช่วยฉันได้เมื่อต้องการยังคงใช้สไตล์เริ่มต้นและการดำเนินการของ iOS แต่ไม่สนใจองค์ประกอบเฉพาะ
GreaterKing

4

ฉันมีปัญหาเดียวกัน แต่ในเว็บแอป iPad

น่าเสียดายที่ไม่ใช่ ...

 <meta name = "format-detection" content = "telephone=no">

หรือ ...

&#48; = 0
&#57; = 9

... ทำงาน

แต่นี่คือสามแฮ็กที่น่าเกลียด:

  • แทนที่หมายเลข "0" ด้วยตัวอักษร "O"
  • แทนที่หมายเลข "1" ด้วยตัวอักษร "l"
  • แทรกช่วงที่ไม่มีความหมาย: เช่น 555.5<span>5</span>5.5555

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

Kludgy แฮ็คอย่างแน่นอนและอาจไม่สามารถใช้งานได้หากคุณสร้างรหัสของคุณแบบไดนามิกจากข้อมูลหรือหากคุณไม่สามารถทำให้ข้อมูลของคุณสกปรกด้วยวิธีนี้

แต่เพียงพอในการเหน็บแนม


2
“ขึ้นอยู่กับตัวอักษรที่คุณใช้เป็นครั้งแรกที่ทั้งสองเพิ่งเห็น” ถ้าผู้ใช้มี iOS ของชุดที่จะอ่านเนื้อหาออกไปพวกเขา จากนั้นมันก็จะค่อนข้างชัดเจน
Paul D. Waite

1
เพื่อความสะดวกในการเข้าถึง (เช่นโปรแกรมอ่านข้อความที่กล่าวถึงข้างต้น) หรือหากผู้ใช้คัดลอก / วางลงในแอพโทรศัพท์ โดยทั่วไปถ้าแมงมุมจาก Yelp หรือ Google หรือสิ่งที่คล้ายกันกำลังทำดัชนีธุรกิจและดึงหมายเลขโทรศัพท์ผิดนั่นก็ไม่ดี
Jonah

4

ฉันมีหมายเลข ABN (หมายเลขธุรกิจออสเตรเลีย) ที่ iPad Safari ยืนยันว่าเปลี่ยนเป็นลิงก์หมายเลขโทรศัพท์ ไม่มีข้อเสนอแนะช่วย ทางออกของฉันคือการใส่แท็ก img ระหว่างตัวเลข

ABN 98<img class="PreventSafariFromTurningIntoLink" /> 009<img /> 675<img /> 709

คลาสมีอยู่เพื่อบันทึกว่าแท็ก img นั้นมีไว้เพื่ออะไร

ใช้งานได้กับ iPad 1 (4.3.1) และ iPad 2 (4.3.3)


3
น่าเสียดายที่ใน Internet Explorer ฉันได้รับไอคอนรูปภาพที่เสียเหล่านั้น การเพิ่มความwidth="0" height="0"ช่วยเหลือ แต่ยังคงแสดงเป็นพิกเซลเดียว
Geert

1
คุณไม่ต้องการรูปภาพเพียงแค่ใส่ HTML ในหมายเลข: <p> ไม่ใช่โทรศัพท์: 112 <span> 34 </span> 56 </p>
Radek Pech

@Geert ตั้งค่าline-heightและfont-sizeเป็นศูนย์
HelpNeeder

4

ประสบการณ์ของฉันเหมือนกับที่คนอื่นพูดถึง เมตาแท็ก ...

<meta name = "format-detection" content = "telephone=no">

... ทำงานเมื่อเว็บไซต์ทำงานใน Mobile Safari (เช่นกับ chrome) แต่หยุดทำงานเมื่อทำงานเป็น webapp (เช่นถูกบันทึกไว้ในหน้าจอหลักและทำงานโดยไม่ใช้ chrome)

โซลูชันที่ไม่เหมาะอย่างยิ่งของฉันคือการแทรกค่าลงในฟิลด์อินพุต ...

<input type="text" readonly="readonly" style="border:none;" value="3105551212">

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


3

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

(604) 555<span></span> -4321

1
นี่คือการแก้ไขที่ฉันใช้โดยใช้งานได้ดีและค่อนข้างง่าย
Holger

2
นี่ไม่ใช่คำตอบที่ดีเพราะคุณสร้าง HTML ที่ไม่ดีโดยเจตนา
stephanfriedrich

2

<meta name = "format-detection" content = "telephone=no"> ใช้งานไม่ได้กับอีเมล: หาก HTML ที่คุณเตรียมไว้มีไว้สำหรับอีเมลเมตาแท็กจะถูกละเว้น

หากสิ่งที่คุณกำหนดเป้าหมายคืออีเมลนี่คือโซลูชันที่น่าเกลียด แต่ใช้ได้สำหรับ ya'll:

ตัวอย่างของ HTML ที่คุณต้องการหลีกเลี่ยงการเชื่อมโยงหรือจัดรูปแบบอัตโนมัติ:

will cease operations <span class='ios-avoid-format'>on June 1,
2012</span><span></span>.

และ CSS ที่จะทำให้เวทมนตร์เกิดขึ้น:

@media only screen and (device-width: 768px) and (orientation:portrait){
span.ios-date{display:none;}
span.ios-date + span:after{content:"on June 1, 2012";}
}

ข้อเสียเปรียบ: คุณอาจต้องค้นหาสื่อสำหรับคอมโบ iPad / iPhone แนวตั้ง / แนวนอนแต่ละอัน



1

ปัญหาเดียวกันในแอป Sencha Touch แก้ไขด้วยเมตาแท็ก ( <meta name="format-detection" content="telephone=no">) ใน index.html ของแอป


1

เคล็ดลับที่ฉันใช้ซึ่งทำงานได้ดีกับ Mobile Safari เพียงอย่างเดียวคือการใช้โค้ดหลบหลีก HTML และเพิ่มจำนวนเล็กน้อยในหมายเลขโทรศัพท์ สิ่งนี้ทำให้เบราว์เซอร์ "ระบุ" หมายเลขโทรศัพท์ยากขึ้นเช่น

Phone: 1-8&#48;&#48;<span>-</span>62&#48;<span>-</span>38&#48;3

1

ฉันมีปัญหาเช่นกัน: Safari และเบราว์เซอร์มือถืออื่น ๆ เปลี่ยนรหัส VAT เป็นหมายเลขโทรศัพท์ ดังนั้นฉันต้องการวิธีการที่สะอาดเพื่อหลีกเลี่ยงในองค์ประกอบเดียวไม่ใช่ทั้งหน้า (หรือเว็บไซต์)
ฉันแบ่งปันวิธีการแก้ปัญหาที่เป็นไปได้ผมพบว่ามันเป็นด้อย แต่ก็ยังทำงานได้สวย: ฉันใส่ภายในหมายเลขที่ฉันไม่ต้องการที่จะกลายเป็นtel:ลิงค์ที่&#8288;นิติบุคคล HTML ซึ่งเป็นคำช่างไม้ตัวอักษรที่มองไม่เห็น ฉันพยายามที่จะอยู่แบบ semantic เพิ่มเติม (อย่างน้อยก็เรียงลำดับ) โดยใส่ char นี้ในบางจุดที่มีความหมายเช่นสำหรับรหัส VAT ฉันเลือกที่จะใส่ไว้ระหว่างกลุ่มตัวเลขที่แตกต่างกันตามรูปแบบดังนั้นสำหรับ VAT อิตาลีฉัน wrote: 0613605&#8288;048&#8288;8ที่แสดงใน0613605⁠048⁠8และจะไม่ถูกแปลงในหมายเลขโทรศัพท์


1

ตัวเลือกอื่นคือการแทนที่ยัติภังค์ในหมายเลขโทรศัพท์ของคุณด้วยอักขระ(U + 2011 'Unicode Non-Breaking Hyphen')


1

ฉันสับสนจริงๆในขณะนี้ แต่ในที่สุดก็คิดออก เราทำการอัปเดตในเว็บไซต์ของเราและมีตัวเลขบางส่วนเปลี่ยนเป็นลิงก์ แต่บางอันก็ไม่ได้ ปรากฎว่าตัวเลขจะไม่ถูกแปลงเป็นลิงก์หากอยู่ใน <fieldset> เห็นได้ชัดว่าไม่ใช่ทางออกที่ถูกต้องสำหรับสถานการณ์ส่วนใหญ่ แต่ในบางกรณีอาจเป็นวิธีที่เหมาะสม


0

คำตอบนี้สำคัญกว่าทุกอย่างตั้งแต่วันที่ 6-13-2012:

<a href="#" style="color: #666666; 
                   text-decoration: none;
                   pointer-events: none;">
  Boca Raton, FL 33487
</a>

เปลี่ยนสีเป็นสิ่งที่ตรงกับข้อความของคุณการตกแต่งข้อความจะลบขีดเส้นใต้เหตุการณ์ตัวชี้หยุดไม่ให้ดูเหมือนลิงก์ในเบราว์เซอร์ (ตัวชี้ไม่เปลี่ยนเป็นมือ)

นี่คือที่สมบูรณ์แบบสำหรับอีเมล HTML บน iOS และเบราว์เซอร์


1
ดูเหมือนว่าฉันจะกำหนดสีไว้อย่างชัดเจน กล่าวอีกนัยหนึ่งมันจะเป็นสีเทาไม่ว่าจะเกิดอะไรขึ้น
benzado

“ เหตุการณ์ตัวชี้หยุดไม่ให้มีการดูเหมือนลิงก์ในเบราว์เซอร์” - ในเบราว์เซอร์ที่รองรับpointer-eventsแน่นอน หากผู้ใช้กำลังดู HTML อีเมลของคุณในIE 10 แต่ไม่ดี
Paul D. Waite

คำถามนี้เกี่ยวกับการระงับการตรวจจับหมายเลขโทรศัพท์ไม่ใช่ที่อยู่ทางไปรษณีย์
jww

0

ทำไมคุณต้องการที่จะลบการเชื่อมโยงมันทำให้ผู้ใช้เป็นมิตรมากที่จะมีการเลือก

หากคุณต้องการลบการแก้ไขอัตโนมัติ แต่ให้การเชื่อมโยงทำงานได้เพียงเพิ่มสิ่งนี้ลงใน CSS ของคุณ ...

a[href^=tel] {
 color: inherit;
 text-decoration:inherit;
}

5
ดีฉันไม่สามารถพูดเกี่ยวกับโปสเตอร์เดิม แต่ในกรณีของฉัน Safari จะคาดเดาโทรศัพท์มือถือที่ไม่ได้จริงหมายเลขโทรศัพท์ที่พวกเขามีข้อมูลทางการเงิน
Irae Carvalho

1
คำถามนี้เกี่ยวกับการตรวจจับลิงก์ในหมายเลขโทรศัพท์ไม่ใช่การแก้ไข
jww

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

เขาไม่ต้องการให้มีการเชื่อมโยงที่อยู่ IP เป็นหมายเลขโทรศัพท์
jahller

0

แบ่งตัวเลขออกเป็นบล็อกข้อความแยกต่างหาก

301 <div style="display:inline-block">441</div> 3909

1
คุณอาจต้องการพูดถึงว่านี่เป็นวิธีแก้ปัญหา
Daan

-16

อีกวิธีคือการใช้ภาพของหมายเลข IP


4
ฉันคิดว่านี่ไม่ใช่ความคิดของพระเจ้า โปรดลบคำตอบของคุณ เนื่องจากคุณไม่สามารถคัดลอก / วางข้อความรูปภาพจึงไม่สามารถให้บริการได้ง่าย (ถ้าคุณเปลี่ยนเนื้อหาหรือแบบอักษร) และไม่ปราศจากสิ่งกีดขวาง
stephanfriedrich

วิธีการแก้ปัญหาอาจเลวร้ายยิ่งกว่าปัญหาดังที่ @stephanfriedrich กล่าวว่านี่จะไม่เป็นประโยชน์หรือใช้งานได้
kaosmos

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