JavaScript的DOM_動態載入指令碼和樣式

來源:互聯網
上載者:User

標籤:

一、動態載入指令碼

  當網站需求變大,指令碼的需求也逐步變大。我們就不得不引入太多的 JS 指令碼而降低了整站的效能,所以就出現了動態指令碼的概念,在適時的時候載入相應的指令碼。

  1、動態載入js檔案

    比如:我們想在需要檢測瀏覽器的時候,再引入檢測檔案。

<script type="text/javascript">    window.onload = function(){        alert(typeof BrowserDetect);    }    var flag = true; //設定 true 再載入    if (flag) {        loadScript(‘browserdetect.js‘); //設定載入的 js    }    function loadScript(url) {        var script = document.createElement(‘script‘);        script.type = ‘text/javascript‘;        script.src = url;        //document.head.appendChild(script); //document.head 表示<head>        document.getElementsByTagName(‘head‘)[0].appendChild(script);    }</script>

  

  2、動態執行 js

<script type="text/javascript">    window.onload = function(){            }    var flag = true; //設定 true 再載入    if (flag) {        var script = document.createElement(‘script‘);        script.type = ‘text/javascript‘;        var text = document.createTextNode("alert(‘Lee‘)"); //IE6,7,8 瀏覽器報錯        script.appendChild(text);        document.getElementsByTagName(‘head‘)[0].appendChild(script);    }</script>

  IE 6,7,8瀏覽器認為 script 是特殊元素,不能在訪問子節點。為了相容,可以使用 text屬性來代替。

<script type="text/javascript">    window.onload = function(){            }    var flag = true; //設定 true 再載入    if (flag) {        var script = document.createElement(‘script‘);        script.type = ‘text/javascript‘;        script.text = "alert(‘Lee‘)";        script.appendChild(text);        document.getElementsByTagName(‘head‘)[0].appendChild(script);    }</script>

 

 

 

二、動態載入樣式

  為了動態載入樣式表,比如切換網站皮膚。樣式表有兩種方式進行載入,一種是<link>標籤,一種是<style>標籤。

 

  1、動態執行 link

    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、動態執行 style

<script type="text/javascript">    var flag = true;    if (flag) {        var style = document.createElement(‘style‘);        style.type = ‘text/css‘;        //var box= document.createTextNode(‘#box{background:red}‘);// IE6,7,8 不支援        //style.appendChild(box);        document.getElementsByTagName(‘head‘)[0].appendChild(style);        insertRule(document.styleSheets[0], ‘#box‘, ‘background:red‘, 0);    }    function insertRule(sheet, selectorText, cssText, position) {        //如果是非 IE6,7,8        if (sheet.insertRule) {            sheet.insertRule(selectorText + "{" + cssText + "}", position);            //如果是 IE6,7,8        } else if (sheet.addRule) {            sheet.addRule(selectorText, cssText, position);        }    }</script>

 

JavaScript的DOM_動態載入指令碼和樣式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.