創(chuàng)建動態(tài)腳本與創(chuàng)建動態(tài)樣式

兼容IE、FireFox、Opera以及Safari的動態(tài)創(chuàng)建javascript代碼的方式

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)
}

//下面是調(diào)用這個函數(shù)的實(shí)例
loadScriptString("function sayHi(){alert('hi')}")
sayHi()

這里首先嘗試標(biāo)準(zhǔn)的DOM文本節(jié)點(diǎn)方法,因?yàn)槌薎E(在IE中會導(dǎo)致拋出錯誤),所有瀏覽器都支持這種方式。如果這行代碼拋出了錯誤,那么說明是IE,于是就必須使用text屬性了

兼容IE、FireFox、Opera以及Safari的動態(tài)創(chuàng)建style樣式代碼的方式

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)
}

//調(diào)用這個函數(shù)的示例如下:
loadStyleString("body{background-color:red}")

以上代碼在所有瀏覽器中都可以正常運(yùn)行,需要注意的是,必須將創(chuàng)建的元素添加到<head>而不是<body>元素,才能保證在所有瀏覽器中的行為一致

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,167評論 1 92
  • 前言 轉(zhuǎn)自博客園 原文 一、簡單介紹一下什么是瀏覽器內(nèi)核。瀏覽器最重要或者說核心的部分是“Rendering En...
    吳晗君閱讀 3,811評論 1 30
  • <a name='html'>HTML</a> Doctype作用?標(biāo)準(zhǔn)模式與兼容模式各有什么區(qū)別? (1)、<...
    clark124閱讀 3,843評論 1 19
  • 圖文作者/糖糖 我們一眾驅(qū)車穿過秦嶺,終于在年初一的晚上到達(dá)遂寧。涪江邊煙花絢爛,燦若白晝,熱鬧而喜慶,我們也應(yīng)景...
    唐糖醬閱讀 497評論 4 9
  • 池塘一荷花, 純潔人人夸。 蓮藕出污泥, 荷花不染之。
    東方俠影閱讀 238評論 0 15

友情鏈接更多精彩內(nèi)容