使用javascript设置XML(非HTML)样式&;浏览器渲染后的css
我使用的是webkit浏览器(safari),所以这个问题是webkit特有的 我让safari呈现XML文档(不是HTML)。为了给文档的某些部分设置样式,我在文档中附加了一个样式表(见下文)。在下面的例子中,第一个“thing”元素中的文本以洋红色显示 这相当有效。但是我还想在文档呈现后动态修改各种元素的样式(我假设使用javascript) 我可以使用javascript使用document.getElementsByName(“a”).item(0)捕获第一个“thing”元素但我不确定如何设置样式(或者这是否可能)。这不起作用=>document.getElementsByName(“a”).item(0.style.display=“无”强> 在呈现xml元素后,如何更改浏览器中xml元素的样式使用javascript设置XML(非HTML)样式&;浏览器渲染后的css,javascript,css,xml,safari,webkit,Javascript,Css,Xml,Safari,Webkit,我使用的是webkit浏览器(safari),所以这个问题是webkit特有的 我让safari呈现XML文档(不是HTML)。为了给文档的某些部分设置样式,我在文档中附加了一个样式表(见下文)。在下面的例子中,第一个“thing”元素中的文本以洋红色显示 这相当有效。但是我还想在文档呈现后动态修改各种元素的样式(我假设使用javascript) 我可以使用javascript使用document.getElementsByName(“a”).item(0)捕获第一个“thing”元素但我不确定
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="simple.css" type="text/css"?>
<document xmlns:ab="adfadfafadf">
<thing name="a">stuff</thing>
<thing name="b">stuff2</thing>
</document>
看起来不太好,但我会尝试单击中的链接,看看WebKit是否支持您想要的样式。如果没有,您可以在查看数据后从服务器动态请求样式表。这可能是唯一的解决办法。看起来不太好,但我会尝试单击中的链接,看看WebKit是否支持您想要的样式。如果没有,您可以在查看数据后从服务器动态请求样式表。这可能是唯一的解决办法 我可以使用javascript使用document.getElementsByName(“a”).item(0)捕获第一个“thing”元素 你甚至不能这样做,在非WebKit浏览器上也不行
getElementsByName
是一种DOM级别1 HTML方法,不应该在XML文档上使用,因为XML文档没有具有特殊意义的name
属性的概念。(这与模式类型为ID
的属性的情况略有不同)
您是否可以合理地期望任意XML文档中的元素上存在style
属性?DOM Level 2样式规范对接口有如下说明:
期望当元素支持内联CSS样式信息时,可以通过在元素接口的实例上使用绑定特定的强制转换方法来获得ElementCSSInlineStyle接口的实例
我认为任意XML文档的元素不支持内联CSS样式信息,因为与[X]HTML不同,没有样式
或其他属性可用于引入CSS。Mozilla和Opera同意WebKit不提供它
但是,DOM Level 2样式的接口应该可以工作(在任何浏览器中)。例如,您可以删除thing[name=“a”]
规则,方法是:
document.styleSheets[0].deleteRule(1);
document.styleSheets[0].insertRule('thing[name="a"] {display: none;}', 1);
并添加一个替换项,如下所示:
document.styleSheets[0].deleteRule(1);
document.styleSheets[0].insertRule('thing[name="a"] {display: none;}', 1);
我可以使用javascript使用document.getElementsByName(“a”).item(0)捕获第一个“thing”元素
你甚至不能这样做,在非WebKit浏览器上也不行getElementsByName
是一种DOM级别1 HTML方法,不应该在XML文档上使用,因为XML文档没有具有特殊意义的name
属性的概念。(这与模式类型为ID
的属性的情况略有不同)
您是否可以合理地期望任意XML文档中的元素上存在style
属性?DOM Level 2样式规范对接口有如下说明:
期望当元素支持内联CSS样式信息时,可以通过在元素接口的实例上使用绑定特定的强制转换方法来获得ElementCSSInlineStyle接口的实例
我认为任意XML文档的元素不支持内联CSS样式信息,因为与[X]HTML不同,没有样式
或其他属性可用于引入CSS。Mozilla和Opera同意WebKit不提供它
但是,DOM Level 2样式的接口应该可以工作(在任何浏览器中)。例如,您可以删除thing[name=“a”]
规则,方法是:
document.styleSheets[0].deleteRule(1);
document.styleSheets[0].insertRule('thing[name="a"] {display: none;}', 1);
并添加一个替换项,如下所示:
document.styleSheets[0].deleteRule(1);
document.styleSheets[0].insertRule('thing[name="a"] {display: none;}', 1);