javascript - Chrome获取外部样式表的cssRules,结果为null
PHP中文网
PHP中文网 2017-04-11 09:08:20
[JavaScript讨论组]

HTML代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Demo</title>
    <link rel="stylesheet" type="text/css" href="base.css" />
    <style>
    p{width: 200px; height: 150px; }
    </style>
</head>
<body>
    <p style="background-color: #f60;"></p>

    <script type="text/javascript">
        var link = document.querySelector("link");
        console.log(link.sheet.cssRules);
    </script>
</body>
</html>    

外部样式表base.css的代码如下:

@charset "utf-8";
p{
    margin: 20px auto; 
    border-radius: 5px; 
    box-shadow: 3px 3px 5px #999;
 }

在chrome中,打开控制台,得到的结果如下:

而在FF浏览器中,就正常了。IE中,把cssRules改为rules也是可以的。所以,我想问问这是不是chrome的兼容性问题?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(1)
黄舟

这个存在浏览器兼容性的问题。
最好不要直接通过cssRules操作样式,这个更偏向于底层,一次性大量操作css规则的时候使用。
IE>9以上,是使用cssRules,貌似IE对于rules也可以得到。
FF和Chrome主要是cssRules
对于IE8及其以下,需要通过document.styleSheets来操作。

所以,一般兼容性可以这样来处理:
var rules=link.sheet.cssRules||link.sheet.rules||document.styleSheets;

我记得我曾经在处理一个移动端转场的时候,用过这个,当时也没有处理IE的兼容性。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号