如何在 webkit 引擎 (Chrome/Safari) 中以编程方式访问样式表

How to access programmatically to a style sheet in webkit engine (Chrome/Safari)

提问人:xdevel2000 提问时间:2/18/2009 最后编辑:cgpxdevel2000 更新时间:4/26/2009 访问量:1540

问:

在 IE 中使用 document.getElementById(“css_id”).styleSheet

或者在 Firefox document.getElementById(“css_id”).sheet 中

我有一个样式表对象要操作,但在 Chrome 和 Safari 中 浏览器,该属性没有。

我怎样才能得到那个对象?

谢谢

JavaScript Safari Google-Chrome 样式表

评论


答:

2赞 olliej 2/18/2009 #1

呃,在我的测试中,.sheet 工作正常——我的测试用例是

<html>
<head>
    <style id="styleElement"></style>
    <link id="linkElement" data="data:text/css," rel="stylesheet"></link>
    <script>
        window.onload=function() {
            alert(["<style element>.style: " + document.getElementById('styleElement').sheet,
                   "<link element>.style: " + document.getElementById('linkElement').sheet])
        }
    </script>
</head>
</html>

我只在 Safari 3.2 和 WebKit nightlies 中进行了测试,Chrome 只使用 Safari 3.1 中的 WebKit,但我不相信 3.1 和 3.2 之间有任何引擎变化。

评论

0赞 xdevel2000 2/18/2009
我在运行时通过 appendChild 附加一个链接标签,在我尝试通过 getElementById 加载它之后,但似乎 css 文件尚未加载......所以它返回 null。奇怪的行为......
0赞 xdevel2000 2/18/2009
...啊,又奇怪了......如果我尝试通过document.styleSheets获取CSS,它将返回!
0赞 olliej 2/19/2009
@xdevel2000:如果您有一个测试用例,其中 Safari 的行为与 Firefox 和 IE 不同,您应该在 bugs.webkit.org 提交报告