簡體   English   中英

將腳本標簽加載為字符串並將其附加到html標頭

[英]Load script tag as a string and append it to html header

我想從服務器以字符串形式加載一些腳本標記並將其附加到HTML標頭中,但是即使我可以附加它,它也不會執行。 這是簡化的HTML文件,用於說明這種情況:

<head>

</head>
<body>

    <script>
        function htmlStringToElement(htmlString) {
            var template = document.createElement('template');
            htmlString = htmlString.trim();
            template.innerHTML = htmlString;
            return template.content.firstChild;
        }

        //Mocking http request
        setTimeout(function() {
            var httpResponseMock = '<script>alert("HELLO FROM HTTP RESPONSE!");<\/script>'; 
            var script = htmlStringToElement(httpResponseMock);
            document.head.appendChild(script);
        }, 1000);
    </script>
</body>

我想這是因為在動態添加腳本時已經渲染了標頭,但是還有其他方法可以實現嗎?

使用Jquery,

var httpResponseMock = '<script><\/script>'; 
$('head').append(httpResponseMock);

並使用javascript

var httpResponseMock = '<script><\/script>'; 
document.getElementsByTagName('head')[0].appendChild(httpResponseMock);

除非您知道自己在做什么,否則永遠不要使用innerHTML。
如果您真的想將腳本動態注入文檔中,請執行以下操作或使用eval:

 const script = document.createElement("script"); script.textContent = "console.log('yay it works!');"; document.head.appendChild(script); 

appendChild正在運行它。

關於JS動態加載的另一個問題還有更長的討論。 在這種情況下,簡單的答案是使用eval評估腳本內容。 請注意,盡管使用eval通常被認為是一種不好的做法

暫無
暫無

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

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