关于text/html的使用

包含在<script type="text/html"></script>内的html会被浏览器忽略,但我们还可以通过js/jquery去访问(HTML markup in a <script> element is effectively ignored by the web browser, yet still accessible by Javascript or jQuery using the <script> element’s id attribute.)。

这里“被忽略”不仅仅是不显示,在这个标签内的内容对浏览器来说也是不可见的,除非通过text()/html()去访问。这点跟<div style="dispaly:none"></div>是有区别的,display:none虽然不可见,但其内容对浏览器是可见的

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <script src="js/jquery.min.js"></script>
    <script>
        $(function () {
            $("#hello").html($("#internal").html());
            console.log($("[name='cnt']"));
        })
    </script>
</head>
<body>
    <div id="hello"></div>
    <div id="internal" style="display:none">
        <div name="cnt">hello</div>
    </div>
</body>
</html>
结果:
n.fn.init[2]

如果用type="text/html"的话:
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <script src="js/jquery.min.js"></script>
    <script>
        $(function () {
            $("#hello").html($("#internal").html());
            console.log($("#cnt"));
        })
    </script>
</head>
<body>
    <div id="hello"></div>
    <script type="text/html" id="internal">
        <div id="cnt">hello</div>
    </script>
</body>
</html>
结果:
n.fn.init[1]

其他问题:
对普通的html和js代码,以上示例都是没问题的,但当有<script src="">或<link href="">时,type="text/html"可能会出现这些外部的js/css不能加载的问题的。

顺便查了一下text/html的使用场景,发现好多人都是在js模板中使用(模板用起来比较简单,用法跟django的很像,2012年以前大行其道的是jquery tmpl,现在貌似要被jsRender取代了)
1、jquery tmpl的简单使用:https://github.com/BorisMoore/jquery-tmpl
2、jsRender的简单使用:http://www.jsviews.com/#jsrender

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值