Вкл. www.mypage.com
У меня есть iframe с www.search.mypage.com
. И у родительского фрейма, и у iframe есть контейнер GTM, к которому у меня есть доступ. Когда в iframe выполняется поиск, контейнер GTM iframe отправляет сообщение в родительский фрейм с данными. Это сообщение принимается eventlistener
в родительском кадре, анализируется и передается в DL (datalayer
родительского кадра).
Но когда пользователь уточняет поисковый запрос, новое сообщение Отправить. Я хочу иметь возможность хранить эти условия поиска, выполненные в одном сеансе, в Array
, который должен быть передан в datalayer
, поэтому я могу видеть, как уточнение выполнено пользователем сеанса.
Пример:
- поиск:
[term1]
- поиск:
[term1, term2]
- поиск:
[term1, term2, term3]
Любые предложения о том, как этого можно достичь? У меня есть следующий слушатель события, прикрепленный к родительскому фрейму, который прослушивает событие, iframeSearchSubmit
.
слушатель события добавлен в окно при загрузке первой страницы
<script type="text/javascript">
(function(window) {
addEvent(window, 'message', function(message) {
try{
var data = JSON.parse(message.data);
var dataLayer = window.dataLayer || (window.dataLayer = []);
if (data.event) {
dataLayer.push({
'event': data.event,
'postMessageData': data,
'query': data.query
});
}
}catch(e){}
});
// Cross-browser event listener
function addEvent(el, evt, fn) {
if (el.addEventListener) {
el.addEventListener(evt, fn);
} else if (el.attachEvent) {
el.attachEvent('on' + evt, function(evt) {
fn.call(el, evt);
});
} else if (typeof el['on' + evt] === 'undefined' || el['on' + evt] === null) {
el['on' + evt] = function(evt) {
fn.call(el, evt);
};
}
}
})(window);
</script>