zoukankan      html  css  js  c++  java
  • 为什么使用 document.write 需要将</script>拆分开

    细心点的朋友可能会注意到,有些网站使用document.write动态加载JS的时候需要把</script>拆分开来写?如下面的例子所示:

    <script type='text/javascript'>
      if (typeof window['jQuery'] == 'undefined') document.write('<scr'+'ipt type="text/javascript" src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></sc'+'ript>');
    </script>
    

    为此,我们可以做一个实验,打开记事本填入下面的内容,另存为html格式,使用浏览器打开看看:

    <html>
    <body>
    <script type="text/javascript">
        document.write('<script type="text/javascript">alert(1024);</script>');
        alert(2048)
    </script>
    </body>
    </html>
    

    最后你会发现结果是这样的:

    '); alert(2048)
    

    因此,我们可以猜出原因可能是,</script> 如果不拆开,会导致过早结束script块,导致后面的JS都被解析成了普通的文本。

    扩展一下,提供另外一种方法在纯JS中动态加载脚本:

    if (typeof(jQuery) == 'undefined') {
        (function() {
            var sct = document.createElement('script');
            sct.src = ('https:' == document.location.protocol ? 'https' : 'http') +
              '://cdn.bootcss.com/jquery/3.4.1/jquery.js';
            sct.type = 'text/javascript';
            var myjs = document.getElementsByTagName('script')[0];
            myjs.parentNode.insertBefore(sct, myjs);
        })();
    }
    
  • 相关阅读:
    schedule和scheduleAtFixedRate的区别
    JAVAWEB项目报"xxx响应头缺失“漏洞处理方案
    springboot整合swagger初探指南
    wsl安装jdk
    树莓派开机启动chrome并全屏
    数据库06_数据库设计
    数据库05_事务处理
    数据库04_SQL简单实践
    Spring-AOP
    数据库03_SQL语句
  • 原文地址:https://www.cnblogs.com/HeCG95/p/12026071.html
Copyright © 2011-2022 走看看