w3school中文 - 如何通過html鏈接預先填充短信正文文本




html事件 (12)

如何使用HTML鏈接打開與預充實體的短信應用程序?

我讀過的一切似乎都表明短信:18005555555?body = bodyTextHere

應該可以工作,但在iPhone上,這是行不通的。 如果我拿出?body = bodyTextHere,並且只使用sms:phonenumber,它就可以工作。

我已經看到幾個QR碼通過Safari鏈接執行此操作的情況。 他們如何能夠預先填充正文文本?


Android和iOS不需要兩個單獨的定位標記。 這應該有所幫助。

//沒有聯繫號碼
<a href="sms:?&body=message">Text Message</a>

//使用聯繫電話號碼
<a href="sms:1234567890;?&body=message">Text Message</a>

//適用於Android和iOS


Bradorego的解決方案對我來說很有效,但這是一個更加廣泛的答案。

一個小問題是你需要使用%20而不是+編碼身體。 對於PHP,這意味著使用rawurlencode($body)而不是urlencode($body) 。 否則,您會在舊版本的iOS中看到消息中的加號,而不是空格。

這裡是一個jQuery函數,它將改變你的iOS設備的短信鏈接。 Android /其他設備應該正常工作,不會執行代碼。

HTML:

<a href="sms:+15551231234?body=Hello%20World">SMS "Hello World" to 555-123-1234</a>

jQuery的:

(function() {
  if ( !navigator.userAgent.match(/(iPad|iPhone|iPod)/g) ) return;

  jQuery('a[href^="sms:"]').attr('href', function() {
    // Convert: sms:+000?body=example
    // To iOS:  sms:+000;body=example (semicolon, not question mark)
    return jQuery(this).attr('href').replace(/sms:(\+?([0-9]*))?\?/, 'sms:$1;');
  });
})();

如果可能,請考慮使用類似a.sms-link的類而不是a[href^="sms:"]



(只是一點點話題),但也許如果你搜索你可能會在這裡絆倒... 在降價 (測試與parsedown和在iOS / Android),你可以這樣做:

   [Link](sms:phone_number,?&body=URL_encoded_body_text)
   //[send sms](sms:1234567890;?&body=my%20very%20interesting%20text)

只要按照這個順序放置所有的符號(我只是按照這個順序測試它,因為它對我來說代碼是最有意義的)。

關於正文鏈接的通知...我只是將... ;?&body= 。 另外,請注意,我發現我需要使用%20作為空格。

我已經在我的iPhone(v.9.2)和另一個android上測試過它,它工作得很好。

這將解決不得不針對不同設備進行破解的問題。 當我在短信中測試它時,我沒有任何文物。

<a href="sms:19131234567;?&body=Question%20from%20mywebsite.com.%20%20MY%20MESSAGE%20-%20" title="Click here to TEXT US gallery token needs updating!">Send me SMS</a>

對於iOS 8,請嘗試以下操作:

<a href="sms:/* phone number here */&body=/* body text here */">Link</a>

切換“;” 用“&”為我工作。


我懷疑在大多數應用程序中,你不會知道誰發短信,所以你只想填充文本正文,而不是數字。 如你所期望的那樣,只需要忽略數字 - 這就是這種情況下的URL:

sms:?body=message

對於iOS除了使用相同的東西外;

sms:;body=message

以下是我用於設置SMS的代碼示例:

var ua = navigator.userAgent.toLowerCase();
var url;

if (ua.indexOf("iphone") > -1 || ua.indexOf("ipad") > -1)
   url = "sms:;body=" + encodeURIComponent("I'm at " + mapUrl + " @ " + pos.Address);
else
   url = "sms:?body=" + encodeURIComponent("I'm at " + mapUrl + " @ " + pos.Address);

   location.href = url;

我發現,在IOS 7的iPhone 4上 ,只有在手機的聯繫人列表中設置了電話號碼,才可以將短信發送到短信。

所以下面的工作如果0606060606是我的聯繫人的一部分:

<a href="sms:0606060606;body=Hello my friend">Send SMS</a>

順便說一下,在iOS 6 (iPhone 3GS)上,它只是與一個機構合作:

<a href="sms:;body=Hello my friend">Send SMS</a>

每個操作系統版本都有不同的操作方式。 看看短信鏈接庫


為了讓sms:和mailto:鏈接可以在iPhone和Android上運行,而不使用任何javascript,請嘗試以下操作:

<a href="sms:321-555-1111?&body=This is what I want to sent">click to text</a>


<a href="mailto:[email protected]?&subject=My subject&body=This is what I want to sent">click to email</a>

我在Android和iPhone的Chrome上以及iPhone上的Safari上進行了測試。
他們都按預期工作。 他們工作時沒有電話號碼或電子郵件地址。


<a href="###" data-telno="13800000000" data-smscontent="hello" class="XXXXX XXXXXX XXXXXX sendsms"/>

$('.sendsms').on('click', function(){
    var p = $(this).data('telno'),
        c = $(this).data('smscontent'),
        t = ';';

    if (!ios) { // add your own iOS check
        t = '?';
    }
    location.href = 'sms:'+ p + t + c;
})

<a href="sms:/* phone number here */&body=/* body text here */">Link</a>

這適用於我的iPhone 5S!





sms