Передача значения в скрытое поле формы / Анализ данных - PullRequest
3 голосов
/ 25 февраля 2012

хорошо, поэтому у clickpath есть этот генератор номеров телефонов, он уникален для каждого посетителя или что-то в этом роде. в основном это динамически генерируемый номер телефона, который извлекается из файла .js. запускается скрипт для отображения этого #. что мне нужно сделать, это взять этот номер с моего сайта или из их сценария, а затем вставить его в качестве значения для скрытого поля формы (каждый # уникален для рекламной кампании, поэтому я знаю, если они пришли на сайт органически, или через баннеры и т. д.). я знаю, как передать значения в поле формы, но я не могу понять, какую функцию вызывать из их файла 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 # находится в

<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>

Однако все, что это делает, это снова отображает # и ничего не передает в значение = ""

есть идеи?

UPDATE

создал нижеприведенные функции вместо 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>

любая помощь с этим была бы замечательной, поскольку получение "поддержки" clickpath было тщетной попыткой. Я буквально попросил их «технику» сказать мне: «Это можно сделать теоретически, но мы не сможем вам помочь». , Отличная техническая команда у них есть. можно подумать, что у них будет какая-то поддержка API, чтобы помочь с такими вещами.

1 Ответ

1 голос
/ 25 февраля 2012

Похоже, что данные, которые вы хотите, находятся в глобальной переменной с именем 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, поместив тег script прямо под скрытым полем, гарантируя, чтоон не вызывается до тех пор, пока поле не будет добавлено в DOM:

<input type="hidden" value="" id="clickphone" name="clickphone"/>
<script type="text/javascript">
    document.getElementById('clickphone').value = GetPhoneText('NNN.NNN.NNNN');
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...