0

我知道这<a href="tel:+15555555555">1-555-555-5555</a>会在手机上启动拨号器,并导致 FF 和 Chrome 尝试在传统计算机上启动默认拨号器;但是,我需要在启动默认行为之前执行一些 JavaScript 以实现一些标记(特别是 dcsMultiTrack)。我尝试了以下方法,但它没有打电话,而是坐着。

<a href="tel:+15555555555" class="call_now preventPhone" onclick="trackPhone('SomeEvent', 'SomeTag','tel:+15555555555',this)">1-555-555-5555</a>


function setLocation(nextPage, target) {
    if (target == "_blank") {
        window.open(nextPage);
    }
    else {
        location.href = nextPage;
    }
}
function trackPhone(vPageUrl, vPageTitle, phone, aTag) {
    dcsMultiTrack('DCS.dcsuri', vPageUrl, 'WT.ti', vPageTitle);
    setTimeout("setLocation('" + phone + "', '" + aTag.target + "')", 500);
    return false;
}
$(document).ready(function () {
    $('.preventPhone').click(function (e) {
        e.preventDefault();
    });
});

编辑:

澄清一下,我正在阻止默认设置,因为电话操作触发得太快以至于 dcsMultiTrack 无法返回其回调,这就是为什么我希望 tel:+... 有一个 JS 等价物。

4

2 回答 2

0

您不必调用函数 preventDefault()?如果被调用,则不会触发事件的默认动作(在传统计算机上启动默认拨号程序)。见event.preventDefault()

于 2012-07-10T12:58:54.083 回答
0

当我在寻找 dcsMultiTrack 解决方案时,我偶然发现了这篇文章,我相信我有适合您的解决方案。

首先,动态创建您的标签,以便您以后可以对其进行操作。

var myLink = document.createElement('a');
myLink.setAttribute('id','myPhoneLink');
myLink.setAttribute('href','javascript://');
var myTextNode = document.createTextNode('1-555-555-5555');
myLink.appendChild(myTextNode);

基本上,这会创建一个在单击时不执行任何操作的链接。

在您的函数中,您可以更改属性 href 的值:

myLink.setAttribute('href','tel:+15555555555');

现在,您的链接有效。您可以将这一行放在一个单独的函数中,该函数具有如下条件语句:

var myCheckFunc = function(){
    if(condition){
      myLink.setAttribute('href','tel:+15555555555');
    }else{
        myCheckFunc();
    }

这样,您的函数会自行调用,直到满足条件,当您准备好更改链接时,它会更改链接的 href。

现在,我有一个关于 webtrends 的问题,如果你能帮我配置管理员,我将不胜感激。

单击横幅时,将调用以下函数

 dcsMultiTrack('DCSext.Carousel','Home','WT.ti','Home',
 'WT.pc','Banner;Position','WT.pn_sku',tempPC,'WT.tx_u',
 tempQuantity,'WT.tx_s',tempQuantity);

如何设置报告以在三列报告中显示结果,显示轮播是 HOME、横幅和位置?

于 2013-01-16T19:42:26.427 回答