2015-09-21 2 views
1

В настоящее время я использую скрипт для получения данных о посетителе из Google Analytics и передачи его в скрытые поля ввода в форме. Я использую сценарий из этой статьи: http://bit.ly/1PiPxrpПоказать неизвестные значения скрытых полей на странице

Если вы посмотрите на рабочий пример здесь (http://codepen.io/saltmktg/pen/meERex - функция начинается в строке 91), вы можете нажать кнопку «Показать GA Info» и увидеть предупреждения для каждого кусок данных. (Вы не увидите реальной информации, потому что сценарий Google Analytics связан с другой учетной записью, то есть не с JSFiddle.) Тем не менее, моя проблема в том, что я хочу отображать эти данные на фактической странице - без посетителя, Show GA Info ". Я хочу, чтобы они сразу же увидели данные, когда они попали на страницу.

Теперь функция populateHiddenFields заполняет скрытые поля, когда вы нажимаете кнопку «Показать GA Info». Я пробовал такие вещи, как <body onload="populateHiddenFields(this); и - но я не могу заставить эту функцию работать в другом месте на странице (кроме привязки к реальной форме).

Пожалуйста, дайте мне знать, если я могу предоставить более подробную информацию или примеры. Еще раз хочу просто визуально отобразить информацию отслеживания посетителя Google Analytics на странице. Заранее спасибо за любую помощь!

ответ

0

Это работает отлично, поэтому я предполагаю, что вы не передадите форму в аргументе. Вы можете сделать в OnLoad или в готовом случае DOM (как вы хотите):

http://codepen.io/anon/pen/ojLwNW

<body onload="populateHiddenFields(document.forms[0])"> 

Я делаю document.forms[0], потому что это единственная форма страницы. Вы можете передать объект по ID или по имени формы.

Успехов

+0

Хорошо, спасибо, это очень помогает! Я добавил '

' на страницу, где теперь добавляется одно из значений Google Analytics. –

+0

Последний вопрос: я хотел бы добавить динамически генерируемое значение Google Analytics (в данном случае «f.source.value» - из строки 93) до конца iframe src на странице (iframe src запускается в строке 138). В идеале это выглядело бы как параметр. Например: 'http: //fakesite.com/test? = AnalyticsSource' Я пробовал ряд решений, но не могу поместить значение в конец iframe src. Любые мысли/предложения? Вот обновленный пример: http://codepen.io/saltmktg/pen/meERex Большое спасибо еще раз за вашу помощь! –

+0

Если вы хотите обновить URL-адрес iframe: 'document.getElementById (" testIframe "). Src = document.getElementById (" testIframe "). Src +" & "+ f.source.value;', который добавляет источник до конца URL-адреса –

0

Так вот обновления на свой код, чтобы сделать его работу:

http://codepen.io/anon/pen/VvjWYz

Все значения отображаются в списке оповещений.

Если вы хотите показать их на экране, сделайте вместо этого скрытые входные данные type = 'text'.

Основная проблема с исходным кодом заключается в том, что populateHiddenFields ожидает, что параметр ссылается на форму, и вызов ее onload не передает эту ссылку.

Спасибо за javascript - Detect if Google Analytics is loaded yet? за какой-то код. Я ссылался на то, чтобы сначала выполнить загрузку Google Analytics.

Мои дополнения:

function checkIfAnalyticsLoaded(f) { 
    //See https://stackoverflow.com/a/1954977/1913396 
    if (window._gat && window._gat._getTracker) { 
    populateHiddenFields(f); 
    } else if (window.urchinTracker) { 
    populateHiddenFields(f); 
    } else { 
    // Retry. Probably want to cap the total number of times you call this. 
    setTimeout(500, checkIfAnalyticsLoaded()); 
    } 
} 

function startOnce() { 

    //See https://stackoverflow.com/a/1954977/1913396 
    if(window._gaq) 
    _gaq.push(['_trackPageview']); 
    //end 

    frm = frm || document.getElementById("contactform"); 
    //or 
    //frm = frm || document.getElementsByName('contactform')[0]; 

    checkIfAnalyticsLoaded(frm);       
} 

var frm = null; 

Я добавил идентификатор атрибута в форму.

Затем, в нижней части тела:

//document.addEventListener('DOMContentLoaded', startOnce, false); 
    (function(){ setTimeout(startOnce, 50); })(); 

Используйте либо.

+0

Спасибо FesterCluck, я ценю это! –

Смежные вопросы