好吧所以clickpath有这个phonenumber生成器,每个访问者或类似的东西都是唯一的。基本上,它是一个从.js文件中提取的动态生成的电话号码。运行脚本以显示此#。我需要做的是从我的网站或他们的脚本中获取此数字,然后将其作为隐藏表单字段的值插入(每个#对于广告活动是唯一的,因此ID知道他们是否有机地来到网站,或通过横幅等)。我知道如何向表单字段提交值,但我无法弄清楚从他们的JS文件调用什么函数或如何从显示的div中删除#或其他东西。
他们的代码
//** COPYRIGHT 2005-2006 - WhosCalling, Inc. **
//!!Do not change variable names!!
var CPMACCOUNTID='XXXXXX';
var CPMClientDir='XXXXXXXX';
var CPMPhoneNumber='XXXXXXXX';
var CPMUrl
if(location.protocol == 'https:'){
CPMUrl='https://analyticssl.clickpathmedia.com';
} else {
CPMUrl='http://analytics.clickpathmedia.com';
}
function RenderPhoneText(num, pat) {
document.write(GetOfficePhoneText(num, pat));
};
function RenderPhoneImage(num, dir) {
var CPMClientWebserver=document.domain; // Change this variable to your webserver address ex: 'www.example.com'
document.write('<img src="http://' + CPMClientWebserver + '/' + dir + '/Sep1.gif" alt="-">');
document.write('<img src="http://' + CPMClientWebserver + '/' + dir + '/Number' + num.substr(0,1) + '.gif">');
document.write('<img src="http://' + CPMClientWebserver + '/' + dir + '/Number' + num.substr(1,1) + '.gif">');
document.write('<img src="http://' + CPMClientWebserver + '/' + dir + '/Number' + num.substr(2,1) + '.gif">');
document.write('<img src="http://' + CPMClientWebserver + '/' + dir + '/Sep2.gif">');
document.write('<img src="http://' + CPMClientWebserver + '/' + dir + '/Number' + num.substr(3,1) + '.gif">');
document.write('<img src="http://' + CPMClientWebserver + '/' + dir + '/Number' + num.substr(4,1) + '.gif">');
document.write('<img src="http://' + CPMClientWebserver + '/' + dir + '/Number' + num.substr(5,1) + '.gif">');
document.write('<img src="http://' + CPMClientWebserver + '/' + dir + '/Sep3.gif">');
document.write('<img src="http://' + CPMClientWebserver + '/' + dir + '/Number' + num.substr(6,1) + '.gif">');
document.write('<img src="http://' + CPMClientWebserver + '/' + dir + '/Number' + num.substr(7,1) + '.gif">');
document.write('<img src="http://' + CPMClientWebserver + '/' + dir + '/Number' + num.substr(8,1) + '.gif">');
document.write('<img src="http://' + CPMClientWebserver + '/' + dir + '/Number' + num.substr(9,1) + '.gif">');
};
function GetOfficePhoneText(num, pat) {
var strResult = "";
var intDigit = 0;
for(var i=0;i<pat.length;++i){
if (pat.charAt(i) == "N") {
strResult = strResult + num.charAt(intDigit);
intDigit = intDigit + 1;
}
else {
strResult = strResult + pat.charAt(i);
}
}
if (intDigit < 10) {
strResult = strResult + num.substr(intDigit);
}
return strResult;
};
function DisplayPhoneText(pat) {
//For backward compatibility
RenderPhoneText(CPMPhoneNumber,pat);
};
function DisplayPhoneImage(dir) {
//For backward compatibility
RenderPhoneImage(CPMPhoneNumber,dir);
};
function GetPhoneText(pat) {
//For flash compatibility
return GetOfficePhoneText(CPMPhoneNumber,pat);
};
function GetPhoneTextOffice(num, pat) {
//For flash compatibility
return GetOfficePhoneText(num,pat);
};
document.write('<script type="text/javascript" LANGUAGE="javascript" src="');
document.write(CPMUrl + '/JS/' + CPMClientDir + '/clickpathremote.js');
document.write('"><\/sc' + 'ript>');
document.write('<script type="text/javascript" language="javascript" src="');
document.write('https://clicktotalk.whoscalling.com/makeClickToTalk.js');
document.write('"><\/sc' + 'ript>');
function clickToTalk(PhoneNumber)
{
makeClickToTalk('https://clicktotalk.whoscalling.com/', PhoneNumber, CPGetSessionValue());
window.setTimeout('CPMLogTraffic(\'104\')', 2000);
}
我的代码
<script type="text/javascript">
document.getElementById('clickphone').value = DisplayPhoneText("NNN.NNN.NNNN");
</script>
<input type="hidden" value="" id="clickphone" name="clickphone"/></input>
div#is in
<div id="rightSide">
<script language="Javascript">DisplayPhoneText("NNN.NNN.NNNN");
</script>866.458.9533<noscript>866.303.5765</noscript>
<a href="" onclick="javascript:clickToTalk('8666180269'); return false;"><img src="images/click-to-call-button.png" border="0" alt="Click To Call"></a></div>
然而,所有这一切都是再次显示#,并且没有将任何内容传递给value =“”
那里有什么想法?
更新
创建了下面的函数,而不是document.write我用return返回实际返回value.called返回我的值而没有...我认为这源于这是一个第三方脚本即时通讯,他们正在拉入我无法访问的外部脚本,因此“不要更改变量名称”注释。我认为此时最简单的事情就是解析DIV中的电话号码文本。但我不知道该怎么做。
function RenderPhoneTextReturn(num, pat) {
return(GetOfficePhoneText(num, pat));
};
function DisplayPhoneTextReturn(pat) {
//For backward compatibility
RenderPhoneTextReturn(CPMPhoneNumber,pat);
};
<script type="text/javascript">
document.onload=function() {
document.getElementById('clickphone').value = DisplayPhoneTextReturn("NNN.NNN.NNNN");
}
</script>
<input type="hidden" value="" id="clickphone" name="clickphone"/></input>
任何对此的帮助都会很精彩,因为获得点击路径“支持”是徒劳的尝试。我确实让他们的“科技”告诉我“理论上这可以做到,但我们不会帮助你。” 。他们拥有伟大的技术团队。你认为他们会有某种API支持来帮助解决这类问题。
答案 0 :(得分:1)
看起来您想要的数据位于名为CPMPhoneNumber的全局变量中。如果你想要这个数字没有格式化,那么你可能只是逃避:
document.getElementById('clickphone').value = CPMPhoneNumber;
如果你想要那个数字的格式化版本,那么看起来它们会为你提供一个名为GetPhoneText()的函数,它接收你想要的格式。你可以这样称呼它:
document.getElementById('clickphone').value = GetPhoneText('NNN.NNN.NNNN');
出于多种原因,我还建议不要使用document.onload。 (例如,页面上的另一个脚本也可能正在使用document.onload,您的脚本或他们的脚本会阻止另一个脚本运行。)
如果你碰巧使用jQuery,那么你可以调用这样的代码:
<script type="text/javascript">
$(function() {
$("#clickphone").val(GetPhoneText('NNN.NNN.NNNN'));
});
</script>
或者,如果您不使用jQuery,那么至少您可以通过将脚本标记直接放在隐藏字段下方来避免使用document.onload,从而确保在字段之后不会调用它已添加到DOM:
<input type="hidden" value="" id="clickphone" name="clickphone"/>
<script type="text/javascript">
document.getElementById('clickphone').value = GetPhoneText('NNN.NNN.NNNN');
</script>