【问题标题】:How to open `tel:+48123` link client side without openning new window/tab in browser如何在浏览器中不打开新窗口/标签的情况下打开“tel:+48123”链接客户端
【发布时间】:2020-04-21 03:31:24
【问题描述】:

如果我自己单击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 方法是唯一可以简单打开任何链接的地方。

【问题讨论】:

  • 我不是安全专家,但我的直觉表明,允许网页以编程方式使我的设备拨打电话将构成某种安全问题。
  • 也许我误解了你的问题,但你不是在找这个吗?简单的html&lt;a href="tel:+123456"&gt;call now &lt;/a&gt;
  • @Pointy 谢谢你的建议。该应用程序仅供授权用户使用,其设备(PC->Windows,平板电脑->Android)我将自行配置。也许有一种方法可以像我在 OP 的编辑中展示的那样,通过 JavaScript 开始一个进程。
  • 好吧,在我确认之前,我的电话实际上不会开始拨号。我尝试使用隐藏的&lt;iframe&gt;,但没有奏效。
  • @Pointy PC 是最重要的,我不想打开这个标签。无论如何,Skype 都在前面。

标签: javascript asp.net-mvc browser hyperlink


【解决方案1】:

解决方案要简单得多:

document.location.href="tel:"+the_number;

【讨论】:

  • 是的,这行得通。但是您应该使用等号来进行分配:) document.location.href = 'tel:0123...'
【解决方案2】:

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

   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”表示当前帧(在大多数情况下=当前页面)

    【讨论】:

      【解决方案4】:

      解决办法是:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-16
        • 2011-09-22
        • 2017-10-29
        • 2012-12-23
        • 1970-01-01
        • 1970-01-01
        • 2010-12-09
        • 1970-01-01
        相关资源
        最近更新 更多