如何在客户端打开 `tel:+48123` 链接而不在浏览器中打开新窗口/选项卡

8

我需要在自己点击 tel:+4842566 链接时产生相同的响应。默认的电话应用程序应该只拨打这个号码。

除此之外,我还将新标签页的打开给处理了。我写了:

function Call(){
    window.open("tel:+4842566",'_blank');     
}

并且这个:

function Call(){
    window.open("tel:+4842566");     
}

并且还有这个:

  function Call(){
        document.getElementById('mymailto').click();
    }


<a href="tel:+48123456" id="mymailto" style="display:none"></a>

结果是一样的。计算机会拨打号码,但会打开新标签页。

问题:是否可能在不打开新的标签页 / 窗口的情况下调用 / 打开此链接?

编辑:在我尝试在客户端运行之前,我在服务器端运行了它,但没有意识到当我部署应用程序时,不是客户端将进行调用:

public ActionResult Call(int id, string number) {
  System.Diagnostics.Process proc = new System.Diagnostics.Process();
    string formattedNumber = "tel:+48" + formatPhoneNumber(number);
    System.Diagnostics.Debug.WriteLine("NUMBER " + formattedNumber);
    proc.StartInfo.FileName = formattedNumber;
    proc.Start();
    Person person = db.Persons.Find(id);
    return RedirectToAction("Edit", new Person { Id = id });
}

但是后来我没有得到新标签页,也许它会在某种程度上有所帮助。

编辑2: 我不仅仅寻找href链接,因为启动tel:链接只是同时发生的两件事情之一:

<p>@Html.ActionLink("Call Cell Phone", "Call", new { id = Model.Id, number = Model.CellNumber }, new { @class = "btn btn-default", onclick = "Call();" })</p>

我前往控制器操作并调用Call() JavaScript方法,而JavaScript方法是唯一可以简单打开任何链接的地方。


1
我不是安全专家,但我的直觉告诉我允许网页编程操作设备拨打电话可能会涉及某种安全问题。 - Pointy
1
也许我误解了你的问题,但是你不是在寻找这个吗?简单的HTML <a href="tel:+123456">现在打电话</a> - Timo002
1
无论如何,我的手机在我确认之前都不会真正开始拨号。我尝试使用隐藏的<iframe>,但没有成功。 - Pointy
@Pointy 电脑是最重要的,我不想打开这个标签页。Skype 无论如何都会到前面来。 - Employee
@Pointy,我已经发布了答案,你可能会感兴趣。 - Employee
显示剩余4条评论
4个回答

11
解决方案要简单得多:
document.location.href="tel:"+the_number;

是的,这个可以工作。但是你应该使用等号来进行赋值 :) document.location.href = 'tel:0123...' - Andreas Linnert

4

好的。这是一个小技巧,它适用于Chrome浏览器,但在我开发ASP .NET MVC Web应用程序时无法在IE浏览器上使用。

   function Call(){
        document.getElementById('mymailto').click();
    }

在HTML中,

表示段落。

<a href="tel:+48123456" id="mymailto" style="display:none"></a>

3

window.open("tel:888", "_self");

第二个参数与'a'标签的"target"属性相同。以下是关于目标的解释: https://www.w3schools.com/tags/att_a_target.asp 因此,"_self"表示当前框架(在大多数情况下为当前页面)。


0

解决方案是:

var call_app = window.open("tel:"+$(this).text(), "_blank");
call_app.close();

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