使用JavaScript打电话

使用JavaScript打电话,javascript,mobile,Javascript,Mobile,我知道将在手机上启动拨号程序,并将导致FF和Chrome尝试在传统计算机上启动默认拨号程序;但是,在启动默认行为之前,我需要执行一些JavaScript来实现一些标记(特别是dcsMultiTrack)。我试过下面的方法,但它没有打电话,而是坐着 <a href="tel:+15555555555" class="call_now preventPhone" onclick="trackPhone('SomeEvent', 'SomeTag','tel:+15555555555',this

我知道
将在手机上启动拨号程序,并将导致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();
    });
});

功能设置位置(下一页,目标){
如果(目标==“_blank”){
窗口。打开(下一页);
}
否则{
location.href=nextPage;
}
}
功能跟踪电话(vPageUrl、vPageTitle、电话、aTag){
dcsMultiTrack('DCS.dcsuri',vPageUrl',WT.ti',vPageTitle);
设置超时(“设置位置(“+phone+”,“+aTag.target+”)”,500);
返回false;
}
$(文档).ready(函数(){
$('.preventPhone')。单击(函数(e){
e、 预防默认值();
});
});
编辑:


澄清一下,我之所以阻止默认值,是因为电话呼叫动作触发得太快,dcsMultiTrack无法返回其回调,这就是为什么我希望tel有一个JS等价物:+…

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

当我在寻找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);

如何设置一个以三列报告的形式显示结果的报告,显示转盘在家、横幅和位置?

请尝试不从
trackPhone
方法返回
false
。您特别禁止默认处理。如果希望在脚本完成后进行默认处理,为什么要这样做?电话呼叫操作启动得太快了。与正常的联系,这工作刚刚好。为了澄清,我希望有一种模仿tel的方法:+。。。。使用JavaScript,但Google并不是很有帮助。在解除绑定后,您必须自己在方法中调用默认事件。例如:'$('.preventPhone')。单击(函数(ev){ev.preventDefault();//…将代码放在此处//稍后您决定要触发默认事件$(this)。取消绑定('click')。单击();});'当然,您必须从html标记中删除“onclick=”“”,希望这对您有所帮助!