.html() 是不是有香草 Javascript 替代品?

Posted

技术标签:

【中文标题】.html() 是不是有香草 Javascript 替代品?【英文标题】:Is there a vanilla Javascript alternative for .html()?.html() 是否有香草 Javascript 替代品? 【发布时间】:2021-01-01 21:41:58 【问题描述】:

我想创建与<noscript> 相反的效果。如果未启用 javascript,我根本不希望加载内容,这就是我对 display:none 替代方案不感兴趣的原因,它仍然会加载但只是隐藏。

我遇到了this previous answer,它具有所需的效果(请参阅更新的答案)。

html

<div id="container"></div>
<script type="text/html" id="content">
    <div class="test">HTML goes here</div>
</script>

jQuery:

$(document).ready(function() 
    $('#container').html($('#content').html());
);

无论如何我可以用 Vanilla Javascript 做到这一点吗?我希望 script 的内容呈现为功能性 HTML。

【问题讨论】:

是的 - .innerHTML 有innerHTML,虽然它有一些大的安全问题。所以一定要对XSS attacks做点什么。 【参考方案1】:

通常所做的是将您的 html 设置为:

<html class="no-js">
<head>
  <script>(function(H)H.className=H.className.replace(/\bno-js\b/,'js');)</script>

  <!-- ... -->

</head>

<!-- ... -->

<div class="js-only">I only show up when js is enabled</div>

<!-- ... -->

</html>

然后有一些隐藏该元素的css

.no-js .js-only 
    display: none;

javascript 将 &lt;html&gt; 元素中的 js 替换为 no-js,这导致 div 仅在启用 js 时才显示

【讨论】:

以上是关于.html() 是不是有香草 Javascript 替代品?的主要内容,如果未能解决你的问题,请参考以下文章

带有香草 HTML 的表单内的单选输入中的多个值

将月份名称转换为香草javascript中多种语言的数字

javascript 香草JavaScript剧透

javascript [香草JS脚本scrab黑客新闻] #javascript

javascript 无限卷轴香草JS

javascript 香草JS窗口的宽度和高度