javascript - 在运行时添加 Knockout 模板会清空 HTML DOM

标签 javascript jquery html dom knockout.js

在运行时添加 knockout 模板会清空 HTML DOM

    var templateEngine = new ko.nativeTemplateEngine();
    templateEngine.addTemplate = function (templateName, templateMarkup) {
        document.write("<script type='text/html' id='" + templateName + "'>" + templateMarkup + "<" + "/script>");
    };
    templateEngine.addTemplate("gridTable","<table></table");

所有之前的内容都会消失,DOM 会变成

<html><head><script type="text/html" id="gridView"><table></table></script></head></html>

最佳答案

正如@nemsev所说,

eveloper.mozilla.org/en-US/docs/Web/API/Document/write: calling document.write on a closed (loaded) document automatically calls document.open which will clear the document

所以,我将代码修改为,

    var templateEngine = new ko.nativeTemplateEngine();

    templateEngine.addTemplate = function (templateName, templateMarkup) {
        //document.write("<script type='text/html' id='" + templateName + "'>" + templateMarkup + "<" + "/script>");
        var scriptTag = document.createElement("script");
        scriptTag.type = "text/html";
        scriptTag.id = templateName;
        scriptTag.innerHTML = templateMarkup;
        var node = document.getElementsByTagName("head")[0];
        node.appendChild(scriptTag);
    };

    templateEngine.addTemplate("gridTable","<table></table");

关于javascript - 在运行时添加 Knockout 模板会清空 HTML DOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29249913/

相关文章:

javascript - 如何一键多次打印某内容?

javascript获取系统时区的时间戳而不是UTC

javascript - 如何在选项卡式平面中设置 iframe 获取其中内容的高度?

javascript - 当页面需要启用 JavaScript 时,Python 获取 URL 内容

javascript - Twitter 小部件仅在 HTML 上显示链接

html - 图片链接无法跨浏览器工作,已检查以确保 div 未被覆盖 - 我错过了什么?

javascript - 使用 Kineticjs 在一个舞台上绘制多个图形?

javascript - 将 Javascript/Jquery 隔离到一个元素

javascript - JQuery Click for any child in any children except

javascript - 如何提高将文本插入 HTML 元素的性能?