Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript设置XML(非HTML)样式&;浏览器渲染后的css_Javascript_Css_Xml_Safari_Webkit - Fatal编程技术网

使用javascript设置XML(非HTML)样式&;浏览器渲染后的css

使用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”元素但我不确定

我使用的是webkit浏览器(safari),所以这个问题是webkit特有的

我让safari呈现XML文档(不是HTML)。为了给文档的某些部分设置样式,我在文档中附加了一个样式表(见下文)。在下面的例子中,第一个“thing”元素中的文本以洋红色显示

这相当有效。但是我还想在文档呈现后动态修改各种元素的样式(我假设使用javascript)

我可以使用javascript使用document.getElementsByName(“a”).item(0)捕获第一个“thing”元素但我不确定如何设置样式(或者这是否可能)。这不起作用=>document.getElementsByName(“a”).item(0.style.display=“无”

在呈现xml元素后,如何更改浏览器中xml元素的样式

<?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);