在GTM中用Java脚本替换html内容
如果Google Tag Manager中的类"Availability Stati13",正在尝试将"sofort lieferbar"替换为"Lieferung auf Bestellung"。
<div class="availability stati13" style="">
sofort lieferbar
<div class="blueinfo">
<div style="display: none; opacity: 1;">in den nächsten Tagen Versandbereit</div>
</div>
</div>
Java脚本本身运行良好,但在GTM中,如果使用自定义的html标记激发,则不会发生任何情况。
数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假"><script type="text/javascript">
function myFunction() {
var str = document.querySelector(".availability.stati13").innerHTML;
var res = str.replace("sofort lieferbar", "Lieferung auf Bestellung");
document.querySelector(".availability.stati13").innerHTML = res;
}
</script>
有人知道为什么GTM中的此脚本不起作用吗?
GTM运行良好,我尝试了这个:
document.body.innerHTML = document.body.innerHTML.replace(/hello/g, 'hi');
这是可行的,但我无法创建If类要求
解决方案
您定义了一个函数myFunction()
,但您在哪里执行它?
也许您应该将其编写为自动执行函数:
(function(){
// your code here ...
})();
还要确保在准备好的DOM上执行此标记(以便您的代码能够找到您要查找的元素)
dom-ready-trigger-in-google-tag-manager-quick-guide/
document.querySelector(".availability.stati13")
行将仅返回第一个元素!。如果此类有多个DOM元素,则必须使用querySelectorAll
为所有这些元素处理此问题。
var elements = document.querySelectorAll(".availability.stati13");
for (i = 0; i < elements.length; ++i) {
var str = elements[i].innerHTML;
elements[i].innerHTML = str.replace("sofort lieferbar", "Lieferung auf Bestellung");
}
我使用for
而不是forEach
以获得最大的兼容性。
相关文章