Javascript 如何在HTML中放置dom元素而不呈现它?

Javascript 如何在HTML中放置dom元素而不呈现它?,javascript,html,dom,Javascript,Html,Dom,我需要将html/javascript代码放在我不想在页面加载时呈现/运行的html页面中 我想稍后使用'innerHTML'获取此内容并动态使用它 如何将代码保存在html页面中,以便浏览器忽略它,但它可以通过Javascript dom交互进行操作 <script norun="true" type="text/xml"> <script type="text/javascript"></script> <d

我需要将html/javascript代码放在我不想在页面加载时呈现/运行的html页面中

我想稍后使用'innerHTML'获取此内容并动态使用它

如何将代码保存在html页面中,以便浏览器忽略它,但它可以通过Javascript dom交互进行操作

 <script norun="true" type="text/xml">
          <script type="text/javascript"></script>
          <div>html</div>
 </script>

html
上面的代码不起作用,因为内部
标记的关闭标记关闭父“text/xml”类型脚本。需要corss平台方法使JS/HTML保持休眠和完整。

当我做类似的事情(通常是SPA样式页面的视图片段)时,我通常使用与您所做的类似的脚本标记方法。这是假设我正在使用,但您可以忽略示例中的这些细节:

<script type="text/hogan-template" id="tweet-template">
  <div class="tweet">
    <div class="username">{{username}}</div>
    <div class="body">{{body}}</div>
    <div class="date-posted">{{posted}}</div>
  </div>
</script>
对于JavaScript,可以在页面上使用类似占位符的内容。我不确定要使用的最具语义的标记,因此我将使用
div
,因为它通常是一个“默认”标记。因此,在您放置include的地方,您只需执行以下操作:

<div class="script-placeholder" id="some_js_file_name" data-href="/js/some_js_file_name.js"></div>
然后,您可以将其添加到您想要启动的任何需求中:

someElement.addEventListener("click", function(e) {
  require("some_js_file_name");
});
这可能会让你实现你想实现的目标

注意:重要的是要注意,如果您真的想走动态加载路线,您可能应该投资一个像CommonJS这样的已建立库来完成这一任务,如果您喜欢我在这里展示的requires样式。这个手写示例就是这样,它是一个示例,让您了解正在发生的事情。

当我做类似的事情(通常是SPA样式页面的视图片段)时,我通常使用与您所做的类似的脚本标记方法。这是假设我正在使用,但您可以忽略示例中的这些细节:

<script type="text/hogan-template" id="tweet-template">
  <div class="tweet">
    <div class="username">{{username}}</div>
    <div class="body">{{body}}</div>
    <div class="date-posted">{{posted}}</div>
  </div>
</script>
对于JavaScript,可以在页面上使用类似占位符的内容。我不确定要使用的最具语义的标记,因此我将使用
div
,因为它通常是一个“默认”标记。因此,在您放置include的地方,您只需执行以下操作:

<div class="script-placeholder" id="some_js_file_name" data-href="/js/some_js_file_name.js"></div>
然后,您可以将其添加到您想要启动的任何需求中:

someElement.addEventListener("click", function(e) {
  require("some_js_file_name");
});
这可能会让你实现你想实现的目标

注意:重要的是要注意,如果您真的想走动态加载路线,您可能应该投资一个像CommonJS这样的已建立库来完成这一任务,如果您喜欢我在这里展示的requires样式。这个手写的示例就是这样,它是一个示例,让您了解正在发生的事情。

未来的解决方案:HTML5。但IE不支持它

安全解决方案:javascript中的实体转义或base64编码和解码

Hacky:
,因为html5本身不允许cdata,但对外来内容(即svg和mathml)例外,未来的解决方案:html5。但IE不支持它

安全解决方案:javascript中的实体转义或base64编码和解码


Hacky:
,因为html5本身不允许cdata,但对外来内容(即svg和mathml)有例外,将代码包装在HTML注释中:

浏览器不会解析或呈现注释中的任何内容

如果要启动呈现,请取消对代码的注释。这可以通过将注释包装在一个可识别的元素中,获取其innerHTML,剥离注释语法,并将元素的innerHTML重置为活动的未注释标记来实现

显示隐藏内容
var r=document.getElementById('delay-render');
var b=document.getElementById('b');
b、 addEventListener('单击',函数()){
r、 innerHTML=r.innerHTML.match(/^$/)[1]
});

将代码包装在HTML注释中:

浏览器不会解析或呈现注释中的任何内容

如果要启动呈现,请取消对代码的注释。这可以通过将注释包装在一个可识别的元素中,获取其innerHTML,剥离注释语法,并将元素的innerHTML重置为活动的未注释标记来实现

显示隐藏内容
var r=document.getElementById('delay-render');
var b=document.getElementById('b');
b、 addEventListener('单击',函数()){
r、 innerHTML=r.innerHTML.match(/^$/)[1]
});

您可以添加它,并使用css将其显示设置为“无”。你仍然可以访问它。它可能一开始就不应该被讨厌。是的,html不是主要问题,它可以用CSS处理,但我想要标准的跨平台方式来保证Javascript的安全。什么是
norun=“true”
。找到了
norun
东西,不知道我是否正确使用了它。你可以添加它,并使用css将其显示设置为“无”。你仍然可以访问它。它可能一开始就不应该被讨厌。是的,html不是主要问题,它可以用CSS处理,但我想要标准的跨平台方式来保证Javascript的安全。什么是
norun=“true”
。找到了诺伦这个东西,我不知道我用的对不对,这让我觉得很恶心。这完全取决于元素的内容,当有其他更干净的方法来处理这个问题时,元素的内容不会改变,当然这是我的观点,但是如果有人提交任何类型的项目请求,我会拒绝。这是一个糟糕的建议。HTML浏览器删除评论。这让我觉得很恶心。这完全取决于元素的内容,当有其他更干净的方法来处理这个问题时,元素的内容不会改变,当然这是我的观点,但是如果有人提交任何类型的项目请求,我会拒绝。这是一个糟糕的建议。HTML缩略器删除评论。如果你要否决投票,解释很好。这为所给问题提供了一个解决方案,因此它是准确的——仅仅因为你不同意并不是否决票的理由