首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过JavaScript访问CSS文件内容

通过JavaScript访问CSS文件内容
EN

Stack Overflow用户
提问于 2012-02-08 00:42:36
回答 7查看 48.3K关注 0票数 30

可以在文档中获取CSS文件的全部文本内容吗?F.ex:

代码语言:javascript
复制
var cssFile = document.getElementById('css');
    // get text contents of cssFile

我不是很喜欢通过document.styleSheets获取所有的CSS规则,还有其他方法吗?

更新:

当然还有ajax选项,我很欣赏你给出的答案。但是,使用已经加载到浏览器中的ajax重新加载文件似乎没有必要。因此,如果任何人知道另一种方法来提取当前CSS文件的文本内容(不是CSS规则),请张贴!

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-02-08 00:46:08

您可以使用简单的ajax加载内容get如果包含来自同一域的样式表,则调用

编辑

更新后:

我尝试了这段代码(在FX10上)作为概念证明 这只使用了一次对CSS的请求,但在我看来有点老生常谈,应该进行测试和验证。如果javascript不可用,也应该通过一些回退来改进它。CSS (外部文件test.css)

代码语言:javascript
复制
div { border: 3px solid red;}

HTML/jQuery

代码语言:javascript
复制
        $(document).ready(function() {

            $.when($.get("test.css"))
            .done(function(response) {
                $('').text(response).appendTo($('head'));
                $('div').html(response);
            });
        })
</code></pre>
<div>您应该会在div中看到带有红色边框的CSS代码:)</div>
<div>尽情享受吧。</div>
票数 22
EN

Stack Overflow用户

发布于 2012-02-08 00:48:07

这样就可以了特定示例(其中CSS与页面位于同一来源),您可以通过将文件作为文本读取ajax

代码语言:javascript
复制
$.ajax({
    url: "/path/to/file.css",
    dataType: "text",
    success: function(cssText) {
        // cssText will be a string containing the text of the file
    }
});

如果您想以更结构化的方式访问信息,document.styleSheets是与文档关联的样式表数组。每个样式表都有一个名为cssRules(或仅在某些浏览器上rules),它是样式表中每个规则的文本数组。每条规则都有一个cssText属性。所以你可以遍历它们,例如:

代码语言:javascript
复制
$.each(document.styleSheets, function(sheetIndex, sheet) {
    console.log("Looking at styleSheet[" + sheetIndex + "]:");
    $.each(sheet.cssRules || sheet.rules, function(ruleIndex, rule) {
        console.log("rule[" + ruleIndex + "]: " + rule.cssText);
    });
});

活生生的例子-这个例子有一个样式表和两个规则。

票数 28
EN

Stack Overflow用户

发布于 2015-09-30 03:28:26

最接近获得样式表的地方不使用ajax实际上是遍历所有CSS规则并将它们连接成一个字符串。这将生成删除了所有注释和多余空格的原始文件。这是有道理的,因为浏览器只需要将解析的样式表保存在内存中,而不是原始文件。它只有3行代码:

代码语言:javascript
复制
function css_text(x) { return x.cssText; }
var file = document.getElementById('css');
var content = Array.prototype.map.call(file.sheet.cssRules, css_text).join('\n');
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9180184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档