【问题标题】:Reading external css using Java Script使用 Javascript 读取外部 css
【发布时间】:2011-11-01 15:38:33
【问题描述】:

所以如果有一个外部css文件,比如:

<link rel='stylesheet' type='text/css' href='test.css'>  

如果我们想使用 javascript 读取样式表,我们可以这样做:

document.styleSheets[0].cssRules[0].cssText; (for example for first rule)

它在 Firefox 中运行良好,但同样的语句在 chrome 中出现错误,类似于 Type Error: "non_object_property_load"

可能是什么问题,我们如何阅读 chrome 中的样式表?

请看看我面临的问题:

http://s4.postimage.org/x5q0xt1vh/file.png  

编辑:所以当测试文件和链接的 css 放在系统本地并且不能通过网络服务器访问时,问题就来了。

【问题讨论】:

  • 您可能需要通过 AJAX 请求加载 CSS。
  • 您不只是链接到 css 有什么原因吗?也许首先使用适当的 css 链接构建页面会更容易?
  • 你能提供一个活生生的例子吗?这可能是由于 Chrome 解析 CSS 的方式存在一些特定差异,这取决于被解析的实际 CSS。
  • >Blender,AJAX 不会改变任何东西,我想要的只是读取已经由 DOM 渲染的 CSS。 >埃文,我不明白你的意思。 @namoul,这很简单。我在 javascript 控制台中简单地复制粘贴此命令,将 test.css 链接到我应用此命令的页面,它在 Firefox 控制台中工作

标签: javascript css google-chrome


【解决方案1】:

好的,我发现了问题。这确实与安全相关,如果外部 css 与 firefox 位于同一目录中但不适用于 chrome,则此方法有效。
如果 css 文件在另一个目录或在线,它在 firefox 中也不起作用。

现在为了解决这个问题,我使用参数--allow-file-access-from-files 启动了 chrome,现在它运行良好。

【讨论】:

    【解决方案2】:

    http://www.quirksmode.org/dom/w3c_css.html - Chrome 不支持 .cssText

    【讨论】:

    • 其实他在例子中给出的具体用法(document.styleSheets[0].cssRules[0].cssText Chrome 支持的。这是第一次使用cssText 后的第三次。
    • 我认为这与安全性有关,因为最初 firefox 也是 givie 安全异常,但后来我将 css 文件移动到同一目录(放置在 hdd 上的本地),它开始工作。现在,如果我打开空白 chrome 选项卡,它可以工作,但在任何网站或我的本地文件上都不能。是否有一些我必须在 chrome 或类似的东西中设置的标志??
    【解决方案3】:

    这适用于 Chrome(至少 14 个):

    document.styleSheets[0].cssRules[0].cssText
    

    这会给你规则。虽然这样:

    document.styleSheets[0].cssRules[0].cssText[0]
    

    会给你第一条规则的第一个字母。

    【讨论】:

    • 其实这很奇怪,因为我使用的是 14.0.835.202 chrome,但使用相同的命令仍然会出现类型错误。
    • 所以这对你不起作用? jsfiddle.net/Tetaxa/JKFAD/1奇怪。我得到这个输出:body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, form, fieldset, input, textarea, p, blockquote, th, td { margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; }
    • 不,事实上我刚刚升级到 chrome 15,现在错误是:TypeError: Cannot read property '0' of null
    • 很奇怪。在 15.0.874.106 m 处为我工作
    • 它也适用于我,但仅适用于正在服务的页面,不适用于本地文件,我想对本地硬盘上的文件执行此操作
    猜你喜欢
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多