Это была странная проблема с незнакомым решением, настолько странная, что мне, вероятно, следовало бы изменить название вопроса.Может быть, сайт с этой проблемой был разовым, но на всякий случай вот ответ.
Я обнаружил, что проблема была не в коде Google Analytics, а в DNN, что конфликтовало между SiteAnalytics.configи модуль HTML DNN.В приведенном ниже фрагменте кода (из SiteAnalytics.config) я вставлял тег noscript для GTM с использованием этого XML:
<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>
Я случайно обнаружил, что моя проблема была решена, когда я удалил все между тегами CDATA иливесь CDATA сам.Затем я попытался повторно вставить noscript при изменении InjectTop с True на False.Это также решило мою проблему.
Итак, я знаю, что внедрение чего-либо в верхнюю часть тела с помощью SiteAnalytics.config вызвало конфликт с модулем DNN HTML на этом конкретном сайте.Можно предположить, что это происходит из-за плохого HTML-кода на странице или нестандартного сценария, вызывающего конфликт.Тем не менее, я проверил шаблон через W3C, и никаких проблем не возникло.Я также удалил все наши собственные скрипты безрезультатно.Таким образом, точный механизм первоначального конфликта неизвестен, но проблема решена.Ниже обновленный код:
<!-- 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>False</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>