Search code examples
djangoiframedjango-templatesgoogle-tag-managernoscript

<iframe> y read as '&lt;' inside noscript tag


I'm adding Google Tag Manager to a website but I'm getting something unusual. I add the code like this:

{% if not debug %}
    <!-- Google Tag Manager -->
    <noscript>
        <iframe src="//www.googletagmanager.com/ns.html?id=GTM-CODE"
                      height="0" width="0" style="display:none;visibility:hidden">
        </iframe>
    </noscript>
    <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=
            '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
    })(window,document,'script','dataLayer','GTM-CODE');</script>
    <!-- End Google Tag Manager -->
{% endif %}

But when I inspect the code in Chrome browser I see this:

<noscript>&lt;iframe src="//www.googletagmanager.com/...sibility:hidden"&gt; &lt;/iframe&gt;</noscript>

In old versions I added Google analytics and Crazy Egg without problems. Any idea? Thanks.


Solution

  • This a bug in Chrome, and all Chromium based browsers documented here.

    The solution described there is:

      1. Open a page which has html tags inside tag and JavaScript is enabled
      1. Disabled javascript
      1. Reload the page once. You will notice that HTML content inside tag will be rendered as plain text. Chrome does not interpret html tags.