首頁 > web前端 > js教程 > 主體

從文件注入 HTML 片段

Susan Sarandon
發布: 2024-11-07 08:18:03
原創
278 人瀏覽過

stackoverflow 上的一個問題:

在 HTML 檔案中包含另一個 HTML 檔案

我正在嘗試並想出了一個乾淨的方法來做到這一點:
1) 使用 fetch() 讀取檔案內容
2) 從字串渲染 DOM 節點
3) 替換 <script>;帶有 DOM 節點的標籤。 </script>

刪除 HTML 規範第 4.12.1.1 處理模型中提到了標籤,因此替換似乎符合規範。

結構

Inject HTML snippet from file

另一個 HTML 文件

<!-- another-html-file.html -->
<h1>Another HTML file</h1>
登入後複製

HTML 檔案index.html

腳本標籤將被替換為 another-html-file.html 的內容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        (() => {
            const thisScript = document.currentScript
            fetch('./another-html-file.html')
            .then(
                (res) => (
                    res.ok // checking if response is ok
                    ? res.text() // return promise with file content as string
                    : null // return null if file is not found
                )
            )
            .then(
                (htmlStr) => (
                    htmlStr // checking if something is returned
                    ? thisScript.replaceWith(
                        // replace this script tag with the DOM Node created from string
                        document.createRange().createContextualFragment(htmlStr)
                    ) 
                    : thisScript.remove() // fallback to remove script if null is returned
                )
            )
        })()
    </script>
</body>
</html>
登入後複製

結果

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>Another HTML file</h1>
</body>
</html>
登入後複製

以上是從文件注入 HTML 片段的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板