如何從字符串加載腳本標籤?

彼得

外部源提供以字符串形式編寫為 HTML 的腳本標記的內容。我需要將這些腳本標籤添加到頭部。如果我這樣做,所有腳本標籤都會添加到 DOM 的 head 標籤中,但是實際上沒有加載任何源(devtools 網絡選項卡)。

<html>
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  </head>
  <body>
    <script>
        let sLoadThis = '<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/underscore@latest/underscore-umd-min.js">'
        sLoadThis = sLoadThis + "<" + "/script>"
        let oScript = $(sLoadThis).get(0);
        document.head.appendChild(oScript);
    </script>
  </body>
</html>

如果我使用 jQuery 作為解釋器,然後使用 vanilla JS 插入腳本標籤,它會起作用:


<html>
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  </head>
  <body>
    <script>
        let sLoadThis = '<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/underscore@latest/underscore-umd-min.js">'
        sLoadThis = sLoadThis + "<" + "/script>"
        let oScript = $(sLoadThis).get(0);
        var vanillaScript = document.createElement('script')
        vanillaScript .type = 'text/javascript'
        vanillaScript .src = oScript.src
        document.head.appendChild(vanillaScript )
    </script>
  </body>
</html>

我想了解為什麼它在我的第一個示例中不起作用。

馬塞爾

第二個示例運行是因為您使用的是 dom 節點。這就是appendChild()工作原理。jQueryget()方法適用於現有的 dom 元素。你唯一擁有的是一個字符串,它還不存在於你的 dom 中。請嘗試以下操作。

let script = $.parseHtml(sLoadThis);
console.log(script.get(0)); // should be a script dom node element

document.head.appendChild(script.get(0));

vanilla JavaScript 中,它比 jQuery 更容易、更快,因為您不必使用依賴項。

const fragment = document.createRange().createContextualFragment(htmlStr);
document.head.appendChild(fragment);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在加載之前可靠地刪除腳本標籤?

如何在谷歌應用程序腳本中將html字符串轉換為沒有html標籤的純文本?

如何使用beautifulsoup從腳本標籤內部抓取數據?

如何從字符串中提取主題標籤並導出為 csv?

腳本標籤中的腳本標籤?

如何從javascript中的字符串中刪除帶有內容的HTML標籤(不是特定標籤)

使用bash腳本從字符串中刪除一組特殊字符

加載第一個腳本後如何使腳本執行

從字符串中提取腳本參數名稱和值

使用字符串 Unity 從遊戲對像中獲取腳本

從動態加載的 Golang 到 CPP 的未知字符串

如何從 jQuery 中的外部文件獲取 JSON 數據並確保在腳本的其餘部分之前加載數據

Powershell 腳本 - 如何讓此腳本僅輸出與某個字符串匹配的值

如何隔離包含在標記標籤中的子字符串?

使用apps腳本加載網頁後,如何獲取ajax(異步)方法加載的數據?

從字符串解析html標籤並在javaScript,vue.js中創建一個數組

如何將我的 bash 腳本結果加載到特定位置

電子預加載器腳本中的訪問路徑如何?

如何使用 bash 腳本刪除字符串格式中的第二個點?

Bash 腳本如何將數組 elementh 與字符串進行比較

如何刪除 HTML 標籤以及 PHP 字符串中的 HTML 內容?

將腳本插入 HTML 字符串

用包含標籤屬性的字符串替換 HTML 標籤

設置標籤為 CoreData 中的字符串

在 matplotlib 中訪問軸標籤字符串

無法加載 Google Sheets 的腳本

Javascript 多個腳本標籤是否允許?

如何在powershell中從FileDateTime格式的字符串中加載日期時間值?

將字符串列表/數組從我的 bash 腳本傳遞給 ansible 腳本