簡體   English   中英

如何在特定腳本標記之后將腳本標記添加到頭部

[英]How to add a script tag to the head section after a specific script tag

我正在使用一個頁面應用程序。 我正在嘗試在特定的JavaScript代碼之后從頁面的嵌套div的頭部添加<script></script>標記,但是出現以下錯誤。 請在下面找到我的jsp代碼。

如何在嵌套div的head標簽中的特定腳本標簽之后添加腳本標簽?

TypeError:無法在“節點”上執行“ appendChild”:參數1不是“節點”類型

<html>
 <head>

        <!-- 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', 'GTM-5HWKRLC');
        </script>

    **<! Here i need to add another script when my inner div loading !>**

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    ...
    </head>

<body>

    <% String gtm = (String) session.getAttribute("gtmObj"); %>

    <div>
    <script>
        document.getElementsByTagName('head')[0].appendChild('<script>window.dataLayer = window.dataLayer || [];dataLayer.push(<%=gtm%>)<\/script>');
    </script>
    </div>
</body>
</html>

appendChild接受類型為nodeHTML element的參數appendChild : //developer.mozilla.org/en-US/docs/Web/API/Node/appendChild ,您正在傳遞string 而是使用document.createElement創建元素。

const script = document.createElement('script');
script.textContent = `window.dataLayer = window.dataLayer || []; dataLayer.push('<%=gtm%>')`;

document.getElementsByTagName('head')[0].appendChild(script);

要在特定script標記之后插入script ,可以添加自定義屬性,然后選擇該元素,然后使用insertAdjacentElementinsertAdjacentElement插入新創建的腳本。

// HTML
<script data-id = "myScript"></script>

// Javascript
const script = document.querySelector("script[data-id='myScript']");
const newScript = document.createElement('script');

newScript.textContent = "const a  = 10";

script.insertAdjacentElement('afterend', newScript);

使用document.getElementById("some").insertAdjacentElement('afterend',script); 並使用insertAdjacentElement將其添加到腳本標簽insertAdjacentElement

 var script = document.createElement("script"); script.setAttribute("type", "text/javascript"); script.setAttribute('textContent', '<script>window.dataLayer = window.dataLayer || [];dataLayer.push(<%=gtm%>);dataLayer.push({\\'event\\':\\'Txn\\',\\'Affiliation\\':\\'Vehicle\\'})<\\/script>'); document.getElementById("some").insertAdjacentElement('afterend',script); 
 <html> <head> <!-- Google Tag Manager --> <script id="some"> (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', 'GTM-5HWKRLC'); </script> </head> <body> something </body> </html> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM