动态脚本

【定义】

  在页面加载时不存在,但将来的某一时刻通过修改DOM动态添加的脚本。

【方式】

  【1】插入外部文件方式

var script = document.createElement("script");
script.type = "text/javascript";
script.src = "js.js";
document.body.appendChild(script);

  使用函数封装如下:

function loadScript(url){
    script = document.createElement("script");
    script.type = "text/javascript";
    script.src = url;
    document.body.appendChild(script);
}
loadScript("js.js");

  【2】直接插入JavaScript代码

    IE8-浏览器下使用appendChild或innerHTML都会报错,因为IE8-浏览器将<script>视为一个特殊的元素,不允许DOM访问其子节点。

var script = document.createElement("script");
script.type = "text/javascript";
//script.innerHTML = "alert('hi');";
//script.appendChild(document.createTextNode("alert('hi');"));
document.body.appendChild(script);

    【解决】使用<script>元素的text属性来指定Javascript代码

var script = document.createElement("script");
script.type = "text/javascript";
script.text = "alert('hi');";
document.body.appendChild(script);

    【完美解决】safari3-浏览器不能正确支持text属性,但却允许使用文本节点,封装兼容函数如下

function loadScriptString(code){
    var script = document.createElement("script");
    script.type = "text/javascript";
    try{
        script.appendChild(document.createTextNode(code));
    }catch(ex){
        script.text = code;
    }
    document.body.appendChild(script);
}
loadScriptString("alert('hi!')");

动态样式

【定义】

  在页面刚加载时不存在,加载完成后动态添加到页面中的样式。

【方式】

  【1】插入外部文件方式

var link = document.createElement("link");
link.rel = "stylesheet";
link.type = "text/css";
link.href = "style.css";
var head = document.getElementsByTagName('head')[0];
head.appendChild(link);

  使用函数封装如下:

function loadStyles(url){
    var link = document.createElement("link");
    link.rel = "stylesheet";
    link.type = "text/css";
    link.href = url;
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(link);
}
loadStyles("style.css");

  【2】直接插入css嵌入样式

var style = document.createElement("style");
style.type = "text/css";
//style.innerHTML = "body{background-color: red;}";
//style.appendChild(document.createTextNode("body{background-color: red;}"));
var head = document.getElementsByTagName('head')[0];
head.appendChild(style); 

    如<script>标签类似,IE8-浏览器将<style>标签当作特殊的节点,不允许访问其子节点。IE10-浏览器支持使用styleSheet.cssText属性来设置样式。兼容写法如下:

function loadStyleString(css){
    var style = document.createElement("style");
    style.type = "text/css";
    try{
        style.appendChild(document.createTextNode(css));
    }catch(ex){
        style.styleSheet.cssText = css;
    }
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(style);
}
loadStyleString("body{background-color: red;}");

   

最新文章

  1. Ubuntu 树莓派2b交叉编译环境
  2. delegate和protocol
  3. Bootstrap3.0学习第二十四轮(JavaScript插件——按钮)
  4. ionic pull to refresh 下拉更新頁面
  5. OpenGL1-6讲小结
  6. 关于JavaScript中计算精度丢失的问题
  7. ORACLE索引监控的简单使用
  8. (转)TabIndex 属性
  9. Flask-SQLAlchemy.........&gt;model创建表
  10. SSM实现秒杀系统案例
  11. DataPipeline | 享物说产品负责人夏凯:数据驱动的用户增长实战
  12. 转载:教你分分钟搞定Docker私有仓库Registry
  13. linux 使用sh@d0ws0cks client
  14. Hadoop学习笔记03_Hive练习
  15. Logstash grok解析IIS 10.0 日志实例
  16. Junit + String/Integer/ArrayList/HashMap/TreeMap 基本使用Demo
  17. tomcat中的类加载机制
  18. php图片采集后按原路径保存图片
  19. IPTABLES拒绝某个IP某项服务,并记录到日志(rhel7实例)
  20. Mybatis中多个参数的问题&amp;&amp;动态SQL&amp;&amp;查询结果与类的对应

热门文章

  1. [转] How to change font settings for all UI elements (toolbar and context menus, property editors, etc.)
  2. 深入分析PHP优化及注意事项
  3. 重绘控件中OnPaint、OnDraw、OnDrawItem和DrawItem的区别
  4. poj 1099
  5. iOS集成丁香园DXY OAuth 登陆 swift代码示例
  6. CSS 布局入门
  7. jQuery Ready 与 Window onload 的区别(转)
  8. Web端导出CSV
  9. 软件测试基本理论-IBM模式
  10. Java提高配(三七)-----Java集合细节(三):subList的缺陷