通过程序给页面添加html属性

Google Analytics Haran 6年前 (2018-03-14) 3301次浏览 0个评论

Google Tag Manager中最恼人的一个功能就是它会自动的将你添加的非标准html属性给移除掉,我之所以用“非标准”这次,是因为我没有一个可排除的详细名单,但至少数据属性,如data-id,和自定义属性,如aria-labelledby,这两种类型是不会被移除的,当你的自定义html包含那两种属性的时候,GTM不会自动阻止你保存容器的。

如果你想通过自定义html去添加自定义属性,那么这一节的内容将对你非常有帮助。

通过程序给页面添加html属性

下面是一个例子,一个包含有元素的代码如下:

<script src="/myScript.js" data-simo-script="My Script"></script>

如果你通过自定义html添加到页面,你看到的是可能会是这样的:
通过程序给页面添加html属性
正如你看到的一样,数据属性已经被移除的了。

下面是另一个例子,你看到的代码如下:

<input type="text" />

你将会看到如下的错误信息,容器不让你保存:
通过程序给页面添加html属性
这是令人非常沮丧的,因为你真的很需要给页面添加自定义属性的。

下面就是实际的解决方案:用js替代,你可以用js重写自定HTML代码去添加元素,通过这种方法,你可以添加任意你想要的属性。

下面它的运行原理

<script>
  (function() {
    // Change 'script' to whatever element you want to create, e.g. 'img' or 'input'.
    var el = document.createElement('script');
    
    // Add any standard attributes you need, e.g. 'src', 'width', 'type', 'name'.
    // The syntax is el.setAttribute(attribute_name, attribute_value).
    el.setAttribute('src', '/myScript.js');
    
    // Add any non-standard attributes with the same method.
    el.setAttribute('data-simo-script', 'My Script');
    
    // Finally, inject the element to the end of <body>
    document.body.appendChild(el);
  })();
</script>

你可以通过js的DOM方法创建一个属性,所有的属性都可以通过setAttribute方法去添加,最后该属性就会出现在<body>的前面。

通过这种方法,你可以完全控制添加到元素的属性以及添加到页面的位置。

说两句:
首先直接通过自定html的添加属性的形式,可能会导致属性丢失或容器保存不了,即使添加上去的时候,该属性可能并不会出现在你想要出现的位置的,所以这种方法很不好。
一般来说是通过代码定位元素,然后通过setAttribute的方法去添加,这种方法可以迁移作为事件跟踪的方法,也就是抛开开发,一种方法解决所有的事件跟踪,这种方法所运用的原理。

 

来源:https://www.simoahava.com


如有疑问,可以在文章底部留言或邮件(haran.huang@ichdata.com) 我~
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址