> 웹 프론트엔드 > JS 튜토리얼 > 스크립트 및 styles_javascript 기술을 동적으로 로드하는 JavaScript 방법

스크립트 및 styles_javascript 기술을 동적으로 로드하는 JavaScript 방법

WBOY
풀어 주다: 2016-05-16 16:04:32
원래의
1135명이 탐색했습니다.

하나의 동적 스크립트

웹사이트에 대한 수요가 증가함에 따라 스크립트에 대한 수요도 점차 증가하고 JS 스크립트를 너무 많이 도입하여 전체 사이트의 성능을 저하시켜야 합니다.
그래서 적시에 해당 스크립트를 로드하는 동적 스크립트의 개념이 등장했습니다.

1. js 파일을 동적으로 소개

  var flag = true;
  if(flag){  
    loadScript('browserdetect.js');          // 调用函数,引入路径;
  }
  function loadScript(url){
    var script = document.createElement('script');   // 创建script标签;
    script.type = 'text/javascript';          // 设置type属性;
    script.src = url;                 // 引入url;
    document.getElementsByTagName('head')[0].appendChild(script);  // 将script引入<head>中;
  }
로그인 후 복사

2. js 코드를 동적으로 실행

  var script = document.createElement('script');
  script.type = 'text/javascript';
  var text = document.createTextNode("alert('Lee')");  // 设置script标签内容;IE会报错;
  script.appendChild(text);
  document.getElementsByTagName('head')[0].appendChild(script);

  // PS:IE浏览器认为script是特殊元素,不能再访问子节点;
  // 为了兼容,可以使用text属性来代替;
  function loadScriptString(code){
    var script = document.createElement("script");
    script.type = "text/javascript";
    try{
    // IE浏览器认为script是特殊元素,不能再访问子节点;报错;
      script.appendChild(document.createTextNode(code));  // W3C方式;
    }catch(ex){
      script.text = code;                    // IE方式;
    }
    document.body.appendChild(script);
  }
  // 调用;
  loadScriptString("function sayHi(){alert('hi')}");
로그인 후 복사

2가지 다이나믹 스타일

웹사이트 스킨 전환 등 스타일 시트를 동적으로 로드하기 위해
스타일을 로드하는 방법에는 두 가지가 있습니다. 하나는 태그이고, 다른 하나는

태그입니다.

1. 링크 파일을 동적으로 소개합니다

  var flag = true;
  if(flag){
    loadStyles('basic.css');                  // 调用函数,引入路径;
  }
  function loadStyles(url){
    var link = document.createElement('link');
    link.rel = 'stylesheet';
    link.type = 'text/css';
    link.href = url;
    document.getElementsByTagName('head')[0].appendChild(link);
  }
로그인 후 복사

2. 스타일 코드를 동적으로 실행합니다

  var flag = true;
  if(flag){
    var style = docuemnt.createElement('style');
    style.type = 'text/css';
    document.getElementsByTagName('head')[0].appendChild(style);
    insertRule(document.styleSheets[0],'#box','background:red',0);
  }
  function insertRule(sheet,selectorText,cssText,position){
    // 如果是非IE;
    if(sheet.insertRule){
      sheet.insertRule(selectorText+"{"+cssText+"}",position);
    // 如果是IE;
    }else if(sheet.addRule){
      sheet.addRule(selectorText,cssText,position);
    }
  }
로그인 후 복사
// 动态执行style2
  function loadStyleString(css){
    var style = document.createElement("style");
    style.type = "text/css";
    try{
    // IE会报错;不允许向<style>元素添加子节点;
      style.appendChild(document.createTextNode(css));
    }catch(ex){
    // 此时,访问元素的StyleSheet属性,该属性有有一个cssText属性,可以接受CSS代码;
      style.styleSheet.cssText = css;
    }
    var head = document.getElementsByTagName("head")[0];
    head.appendChild(style);
  }
  // 调用;
  loadStyleString("body {background-color:red}");
로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿