页面加载时重定向到"sms:123454"的位置重定向不起作用。

11

以下是我获得的代码,用于在用户使用移动浏览器时将位置重定向到短信应用程序 -

window.onload = function() {
    window.location ="sms:12345?body=" + encodeURIComponent("TEST");
}

这段代码在移动设备上在 JS Fiddle 上运行得非常完美。 JS Fiddle 链接 - https://jsfiddle.net/netstarter/rwqyp2tn/1/


如果这不起作用,那么尝试使用 document.onready - Tarun Lalwani
@TarunLalwani 不,它不能与document.onload或document.onready一起使用。 - NetStarter
当您在导航栏中手动输入相同内容时,会发生什么?它是否有效? - Tarun Lalwani
那么为什么你期望它通过代码工作呢? - Tarun Lalwani
@TarunLalwani 因为可能有一种方法可以使它工作。当使用 <a href="SMS:12345?body=dwdwdwdwd">send</a> 时,它可以正常工作。 - NetStarter
显示剩余2条评论
2个回答

2

最简单和适当的方法是创建一个隐藏链接并直接触发它。

window.onload = () => {
  let element = document.getElementById("hiddenAppLink");
  element && element.click();
};
<!DOCTYPE html>
<html>
<body>
<a href='sms:12345?body=${encodeURIComponent("ITR")}' id="hiddenAppLink"></a>
</body>
</html>

您还可以根据条件触发它,通过跟踪其关闭状态或变量来避免在每次加载时打扰用户(您也可以使用localStorage,但无法在fiddle中使用 => 安全性问题)。类似于这样的内容。

window.onload = () => {
  if(window.hideDialouge != true){
      let element = document.getElementById("hiddenAppLink");
      element && element.click();
      //Track if its alredy shown
      window.hideDialouge = true;
  }
};
<html>
    <body>
    <a href='sms:12345?body=${encodeURIComponent("ITR")}' id="hiddenAppLink"></a>
    </body>
    </html>


2
可能是因为这个原因... https://www.androidpolice.com/2017/11/08/google-chrome-will-start-blocking-redirecting-ads/ ... 不能怪谷歌 :). - karthik

1
SMS URL似乎只有在您要打开新的SMS URL时才能正常工作。当您手动输入URL或使用window.location重定向时,它无法正常工作。
您可以使用两种方法来实现此目的:
1. 打开隐藏链接。 2. 使用window.open(这可能会要求用户允许在您的页面上弹出窗口)
1. 打开隐藏链接。
创建一个隐藏链接并打开它。

window.onload = function() {
  let elem = document.getElementById("loadSMS");
  elem && elem.click();
}
<a href="sms:1-111-1111?body=Blah" style="display:none" id="loadSMS">
</a>

2. 使用 window.open 而不是改变 window.location

window.onload = function() {
  window.open("sms:1-111-1111?body=Blah");
}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接