用JavaScript打个电话

时间:2012-07-10 12:50:59

标签: javascript mobile

我知道<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无法返回其回调,这就是为什么我希望有一个与JS相当的电话:+ ....

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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);

如何设置报告,以三列报告显示结果,显示轮播是否为主页,横幅和位置?