【发布时间】:2018-10-25 18:37:00
【问题描述】:
我们有一个网站,Google 跟踪代码管理器似乎阻止保存 HTML 模块中的更改。 GTM 是按照规范实现的,并且按照我们预期的方式运行。
当 Google 跟踪代码管理器在页面上时,HTML 模块更改不会保存。当它被删除时,更改会正确保存。
没有抛出任何 javascript 错误。没有记录 DNN 管理日志错误。
我正在寻找答案,希望其他人以前见过。
要插入 GTM,我将以下内容用作我的 SiteAnalytics.config 和 GoogleAnalytics.config:
<!-- SiteAnalytics.config -->
<?xml version="1.0" encoding="utf-8" ?>
<AnalyticsEngineConfig>
<Engines>
<AnalyticsEngine>
<EngineType>DotNetNuke.Services.Analytics.GoogleAnalyticsEngine, DotNetNuke</EngineType>
<ElementId>Head</ElementId>
<InjectTop>True</InjectTop>
<ScriptTemplate>
<![CDATA[
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','[TRACKING_ID]');</script>
<!-- End Google Tag Manager -->
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '[TRACKING_ID]');
</script>
]]>
</ScriptTemplate>
</AnalyticsEngine>
<AnalyticsEngine>
<EngineType>DotNetNuke.Services.Analytics.GoogleAnalyticsEngine, DotNetNuke</EngineType>
<ElementId>Body</ElementId>
<InjectTop>True</InjectTop>
<ScriptTemplate>
<![CDATA[
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=[TRACKING_ID]"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
]]>
</ScriptTemplate>
</AnalyticsEngine>
</Engines>
</AnalyticsEngineConfig>
<!-- GoogleAnalytics.config -->
<?xml version="1.0" encoding="utf-8"?>
<AnalyticsConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Settings>
<AnalyticsSetting>
<SettingName>TrackingId</SettingName>
<SettingValue>GTM-CODEHERE</SettingValue>
</AnalyticsSetting>
<AnalyticsSetting>
<SettingName>UrlParameter</SettingName>
<SettingValue />
</AnalyticsSetting>
<AnalyticsSetting>
<SettingName>TrackForAdmin</SettingName>
<SettingValue>true</SettingValue>
</AnalyticsSetting>
</Settings>
</AnalyticsConfig>
到目前为止我已经尝试过:
- 从 GTM 中删除除 Universal Analytics 之外的所有标签
- 将 GTM 代码设置为 .defer=true 而不是 .async=true(请参阅 Google Tag Manager delaying window.load?)
- 通过删除我的自定义 javascript 来最小化我的主题 (skin.ascx)
- 在 DOMContentLoaded 上加载 GTM(请参阅 JavaScript that executes after page load)
- 使用 W3C 的 HTML 检查器验证皮肤模板
今天继续。
【问题讨论】:
-
会发生这样的冲突,我会说最好以一种可以识别页面处于“编辑模式”而不呈现 GTM sn-ps 的方式对其进行编码。
-
确实没有足够的信息来帮助您。您是否确认这实际上是由于 GTM,而不是由于 GTM 中实现的某些标记(例如,很容易在自定义 HTML 标记中意外创建一个全局 js 变量,从而覆盖页面代码中的现有变量)。
-
感谢您的想法。我确实喜欢在编辑模式下限制 GTM 的想法。至于缩小问题范围:我所拥有的只有 Universal Analytics 和一个捕获旧版 Google 事件推送的触发器,但我想我会删除我添加到 GTM 的所有内容,看看问题是否仍然存在。
标签: dotnetnuke google-tag-manager