为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用Javascript创建<Style>标记?

如何使用Javascript创建<Style>标记?

MMMHUHU 2019-06-13 17:15:46
如何使用Javascript创建<Style>标记?我正在寻找一种插入<style>标记到带有JavaScript的HTML页面中。到目前为止我找到的最好的方法是:var divNode = document.createElement("div");divNode.innerHTML = "<br><style>h1 { background: red; }</style>";document.body.appendChild(divNode);这在Firefox、Opera和InternetExplorer中都适用,但在GoogleChrome中就不行了。而且它有点丑陋<br>在IE的前面。有谁知道如何创建一个<style>标记更好和Chrome一起工作吗?或者也许这是我应该避免的不标准的事情。三种正常工作的浏览器都很不错,还有谁在使用Chrome呢?
查看完整描述

3 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

尝试添加style元素的head而不是body.

这在IE(7-9)、Firefox、Opera和Chrome中进行了测试:

var css = 'h1 { background: red; }',
    head = document.head || document.getElementsByTagName('head')[0],
    style = document.createElement('style');head.appendChild(style);style.type = 'text/css';if (style.styleSheet){
  // This is required for IE8 and below.
  style.styleSheet.cssText = css;} else {
  style.appendChild(document.createTextNode(css));}


查看完整回答
反对 回复 2019-06-13
?
富国沪深

TA贡献1790条经验 获得超9个赞

下面是一个添加IE风格的脚本createStyleSheet()addRule()方法到没有浏览器的浏览器:

if(typeof document.createStyleSheet === 'undefined') {
    document.createStyleSheet = (function() {
        function createStyleSheet(href) {
            if(typeof href !== 'undefined') {
                var element = document.createElement('link');
                element.type = 'text/css';
                element.rel = 'stylesheet';
                element.href = href;
            }
            else {
                var element = document.createElement('style');
                element.type = 'text/css';
            }

            document.getElementsByTagName('head')[0].appendChild(element);
            var sheet = document.styleSheets[document.styleSheets.length - 1];

            if(typeof sheet.addRule === 'undefined')
                sheet.addRule = addRule;

            if(typeof sheet.removeRule === 'undefined')
                sheet.removeRule = sheet.deleteRule;

            return sheet;
        }

        function addRule(selectorText, cssText, index) {
            if(typeof index === 'undefined')
                index = this.cssRules.length;

            this.insertRule(selectorText + ' {' + cssText + '}', index);
        }

        return createStyleSheet;
    })();}

您可以通过

document.createStyleSheet('foo.css');

并通过以下方式动态创建规则

var sheet = document.createStyleSheet();sheet.addRule('h1', 'background: red;');


查看完整回答
反对 回复 2019-06-13
  • 3 回答
  • 0 关注
  • 860 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号