1

我正在使用带有 jqtouch 的 phonegap 并试图非常简单地打开手机的本机手机应用程序并提示呼叫。我已经尝试了以下各种变化:

<a href="tel:[NUMBER]" class="greenButton>Call number</a>

我试过 rel="external"

我试过使用 href="tel://"

我试过 target="_blank"

我试过 target="_webapp"

我什至尝试添加 class="tel" 并使用 jQuery 调用 $(location).attr('href',this.href);

基本上,jqtouch 必须拦截链接才能做到这一点,我不知道如何让它正常工作!

然而,我发现了一些奇怪的东西......
如果我将链接包装在 iscroll 包装器中,它就可以工作。

<div class="s-scrollwrapper">
<a href="tel:[NUMBER]" class="greenButton">Call number</a>
</div>

我显然不想满足于此,因为它搞砸了格式并使按钮可滚动并且毫无意义。任何人都可以帮助我吗?

4

5 回答 5

1

在我的情况下,我通过添加以下选项设法解决了 iScroll 的问题:

  var options = {
    //other options
    onBeforeScrollStart: function (e) {
      var target = e.target;
      while (target.nodeType != 1) target = target.parentNode;
      if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA' && target.tagName != 'A') e.preventDefault();
    }
  };
  var myScroll = new iScroll(wrap, options);
于 2011-12-21T09:58:08.133 回答
0

我试过:

<a href="tel:[NUMBER]" rel="external" target="_webapp">Call number</a>

...而且效果很好。

可能是它既需要rel="external"(阻止它尝试 AJAX 链接)target="_webapp"又需要它不尝试打开 Safari 来处理链接。

于 2011-11-16T03:15:25.207 回答
0

这确实是 jqtouch 拦截点击事件并阻止默认行为的方式。我最终“修复”它的方式是使用调用按钮在页面上的内容周围放置一个“s-scrollwrapper”div。无论如何,我都需要对应用程序的所有屏幕执行此操作,但对于这个 datazombies fork,它可能需要一种更好的方法来实现 tel 链接。

于 2011-12-14T10:22:45.827 回答
0

您需要target="_system"在 iOS 上使用tel:链接才能正常工作。

于 2014-01-23T09:19:38.110 回答
0

如果有人遇到同样的问题,您可以尝试“高级选项preventDefaultException”部分中的选项http://iscrolljs.com/#advanced-options

来自 iScroll 5 文档:

options.preventDefaultException

尽管有 preventDefault 选项值,这些都是preventDefault()无论如何都会被触发的例外情况。这是一个非常强大的选项,例如,如果您不想preventDefault()在所有具有表单字段类名称的元素上,您可以传递以下内容:

preventDefaultException: { className: /(^|\s)formfield(\s|$)/ }

默认值:{ tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT)$/ }

因此,您只需将 A 标签添加到 tagName 值: { tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT|A)$/ }

于 2015-09-29T10:21:10.297 回答