- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我需要向 DOM 中插入大量 HTML。
我目前的做法是将我需要插入的 HTML 复制粘贴到一个 JS 文件中,对其进行格式化,使其在字符串中没有错误,然后使用 insertAdjacentHTML()
来插入。
在 JS 中有一个巨大的、多行的复制粘贴 HTML 字符串,每次我碰巧滚动浏览它时都感觉很脏。
唯一的限制是我真的想尽可能避免使用库。
在这种情况下更好的是几乎是一个安全的实现,它提高了可读性。
最佳答案
即使您不想使用 HTML 模板工具,您仍然可以以类似的方式包含 HTML。
handlebars.js站点包含一些示例,例如在 .html 文件本身中包含 HTML、选择元素以及解析其内容:
You can deliver a template to the browser by including it in a tag.
<script id="entry-template" type="text/x-handlebars-template">
<div class="entry">
<h1>{{title}}</h1>
<div class="body">
{{body}}
</div>
</div>
</script>
Compile a template in JavaScript by using Handlebars.compile
var source = $("#entry-template").html();
var template = Handlebars.compile(source);
在您的情况下,您可以将 html 中的 type
属性替换为任何明显的内容,并通过调用 document.querySelector("htmlString").innerHTML
检索内容.
其他选项包括通过 AJAX 将 HTML 作为单独的文件加载,或者如果你有胆量,可以编写自己的转译器为你将 HTML 粘贴到 Javascript 中(这基本上是 React 使用 JSX 所做的)
最后要考虑的一件事:您需要确保注入(inject)的 HTML 不包含任何潜在的 XSS 漏洞,或者任何 DOM 事件都不会因为添加 HTML 而搞砸(尽管使用 insertAdjacentHTML
应该防止事件中断)。
此外,请考虑查看我之前写的这段 HTML 注入(inject)代码,以确保您避免(部分但不是全部)可能的陷阱: https://github.com/jsweeneydev/HTMLTemplate/blob/master/htmltemplate.js
祝你好运!
关于javascript - 有没有比 insertAdjacentHTML() 和一个巨大的 HTML 字符串更好的方法将 HTML 插入到 DOM 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33530785/
我可以添加我想要的元素,但刷新后它们就会消失。使用 insertAdjacementHTML 时如何永久保存元素,还是需要使用其他方法? 示例代码: function itemAdder () {
我想在特定元素后插入 html,但 insertAdjacentHTML 不允许我先添加结束标签。 如果我这样做 elm.insertAdjacentHTML('afterend', ''); 预期结
我有两个功能。第一个是检查所有输入元素以确保它们被正确填充的那个。一切正常,但随着第二个函数开始运行(第二个函数“newInput()”添加输入),第一个函数不能再应用了。 调试器说 atpositi
fiddle - http://jsfiddle.net/u3bmytnL/ ,没有按预期工作 var x = document.createElement("button"); x.textCont
所以我使用 electron 并在我的文件“ipcRendererEvent.js”中编写了以下代码: function loadImages (images) { const imagesLis
我最近发现了 insertAdjacentHTML 方法,这是天赐之物。因此,我想知道这种方法的支持程度。 IE有吗? Chrome 呢? 最佳答案 我强烈推荐 John Resing 的这篇文章 -
我是 JavaScript 的新学习者,我正在遵循在线指南。基本上我正在创建一个非常简单的待办事项列表。我尝试按照指南进行操作,但似乎我做错了什么。它不会在网页上添加待办事项。 let ourForm
您好,我有一个简单的问题,我是否需要指定lblWelcomeUserMessage.innerHTML = ""; (见下面的代码)在下面的函数之前insertAdjacentHTML就可以了?它实际
我正在尝试从数组(JSON 编码值)动态加载一些链接作为 div 内的列表。在我的实际应用程序中,这个数组来自 PHP。 我使用 insertAdjacentHTML('beforeend', "li
我无法将样式应用于使用 .insertAdjacentHTML 创建的元素。 我试过使用 .style.cssText 但它不起作用。 JS: function addTime(){ cons
我正在尝试编写一个函数来镜像 insertAdjacentHTML dom 方法 Element.insertAdjacentHTML这是 function insertAdjacent(target
使用 native Javascript。通过 insertAdjacentHTML 添加新元素后,我想选择该元素本身( two )。如何在不搜索 DOM 的情况下获得它? // one var d1
我的 CSS 是这样的: function showNoResults() { results.innerHTML = '' results.insertAdjacentHTML( '
如何保留对新创建的元素 (createElement()) 的引用,该元素是我在 DOM 中的现有元素 (insertAdjacentHTML()) 之后插入的? 在此示例中,如果我在 insertA
出于某种原因,在 FF 中使用 insertAdjacentHtml 函数时出现 insertAdjacentHTMl is not a function 错误,在 jQuery 或其他一些替代 ja
我有一个很长的文本包含在一个 中标签。像这样: Lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod...
我可以使用 insertAdjacentHTML执行内联 JavaScript? 浏览器控制台的工作原理: $('body').append('alert(1)') 我需要在浏览器控制台中工作: do
尝试执行此代码时,IE 给我一个错误(错误:此操作的目标元素无效。): var d1 = document.getElementById( name + '-body'); d1.insertAdja
我正在尝试在单击某个按钮时添加新的输入和按钮。 ... Add 这是我的问题。 通过单击按
是否可以在 Jquery 中为 insertAdjacentHTML 设置动画?现在它只是将其直接粘贴到指定的 div 中。 当前函数 $(".select-category").click(func
我是一名优秀的程序员,十分优秀!