跟踪代码管理器未按类名称查找子元素

时间:2019-05-22 13:50:50

标签: javascript google-tag-manager

我正在尝试通过使用Google跟踪代码管理器将子元素的innerHTML和元素属性值连接起来来创建一个字符串。当我运行getElementsByClassName通过GTM捕获所有子元素时,由于我验证了“ isPdpFamilyMember.length”并收到0,因此它没有捕获任何数据。

我同时使用了GTM和TamperMonkey Chrome扩展程序来实时运行脚本。该脚本唯一可以正常运行的时间是页面加载完成后,我将其输入到Chrome devtools的“控制台”面板中,然后单击“返回”。

这是脚本应处理的代码的示例。它存在于客户端中,而不存在于源代码中:

<div id="mz-family-container">
    <div class="family-members"></div>
    <div class="family-members"></div>
</div>

这实际上是源代码中的内容:

<div id="mz-family-container"></div>

这是GTM的脚本:

(function() {
      window.onload=function(){var pdpMain = document.querySelectorAll('div[itemtype="http://schema.org/Product"]')[0],
        isPdpFamily = document.getElementById('mz-family-container'),
        isPdpFamilyMember,
        pdpMainIdNos = /[0-9]{4,7}/,
        pdpMainId = pdpMainIdNos.exec(pdpMain.querySelectorAll('span[itemprop="sku"]')[0].innerHTML),
        pdpMainColorContainer,
        pdpMainColor,
        pdpMainSizeContainer,
        pdpMainSize,
        pdpMainSku,
        i;
    if (isPdpFamily) {
        isPdpFamilyMember = isPdpFamily.getElementsByClassName('family-members');

        for (i = 0; i < isPdpFamilyMember.length; i++) {
            var isPdpFamilyMemberThis = isPdpFamilyMember[i].getAttribute('id');
            if (isPdpFamilyMemberThis = pdpMainId) {
                pdpMainColorContainer = isPdpFamilyMember[i].querySelectorAll('select[data-mz-product-option="tenant~color"]')[0];
                pdpMainColor = pdpMainColorContainer.options[1].value;
                pdpMainSizeContainer = isPdpFamilyMember[i].querySelectorAll('select[data-mz-product-option="tenant~size"]')[0];
                pdpMainSize = pdpMainSizeContainer.options[1].value;
                pdpMainSku = isPdpFamilyMemberThis + "-" + pdpMainColor.toUpperCase() + "-" + pdpMainSize.toUpperCase();
            } else {
            continue;
            }
        }
    } else {
        pdpMainColorContainer = pdpMain.querySelectorAll('select[data-mz-product-option="tenant~color"]')[0];
        pdpMainColor = pdpMainColorContainer.options[1].value;
        pdpMainSizeContainer = pdpMain.querySelectorAll('select[data-mz-product-option="tenant~size"]')[0];
        pdpMainSize = pdpMainSizeContainer.options[1].value;
        pdpMainSku = pdpMainId + "-" + pdpMainColor.toUpperCase() + "-" + pdpMainSize.toUpperCase();
    }
return pdpMainSku;
                              }
})();

因为'isPdpFamilyMember.length'的结果为0,所以子属性不存在,因此无法创建字符串。

0 个答案:

没有答案