【问题标题】:Search query tracking from iframe来自 iframe 的搜索查询跟踪
【发布时间】:2020-04-21 21:37:53
【问题描述】:

www.mypage.com 上,我有一个带有www.search.mypage.com 的iframe。父框架和 iframe 都有一个我可以访问的 GTM 容器。 在 iframe 中进行搜索时,iframe GTM 容器会向父框架发送一条带有数据的消息。此消息被父框架中的eventlistener 拾取,解析并推送到DL(父框架的datalayer)。

但是当用户细化搜索词时,会发送一条新消息。我希望能够将在同一个会话中完成的这些搜索词存储在一个Array 中,然后推送到datalayer,这样我就可以看到会话的用户完成了细化。

例子:

  1. 搜索:[term1]
  2. 搜索:[term1, term2]
  3. 搜索:[term1, term2, term3]

关于如何实现这一点有什么建议吗? 我将以下事件侦听器附加到父框架,用于侦听事件iframeSearchSubmit

event listener added to window on first page load

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

【问题讨论】:

    标签: javascript iframe google-tag-manager addeventlistener


    【解决方案1】:

    我希望能够存储在同一会话中完成的这些搜索词

    dataLayer 有一个页面范围,即,每当重新加载页面时,它都会被清除,所以这不起作用。 因此您需要自己添加某种形式的持久性,一些选项:

    因为浏览器支持可能会有所不同并且编码可能有点繁重,您可能需要查看包装/抽象这些存储选项的库,以便您可以用更少的代码编写更强大的实现:

    这是一个展示如何持久化 GTM 数据层的示例:

    https://www.simoahava.com/analytics/two-ways-to-persist-data-via-google-tag-manager/

    【讨论】:

    • 谢谢!我会看看哪种存储最适合。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多