Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 如何在IE9剥离之前获取样式属性值_Javascript_Css_Internet Explorer_Internet Explorer 9_Inline Styles - Fatal编程技术网

Javascript 如何在IE9剥离之前获取样式属性值

Javascript 如何在IE9剥离之前获取样式属性值,javascript,css,internet-explorer,internet-explorer-9,inline-styles,Javascript,Css,Internet Explorer,Internet Explorer 9,Inline Styles,我试图在IE9-10去除无效值之前获取style属性的值。到目前为止,我已经尝试了下面的每一种变化- $0.attributes.style $0.style $0.getAttribute('style') 但是,如果我试图设置一个无效的值,我似乎无法访问它- <div style="display: none; color: ${fake-value}"> </div> 由于IE9-10去除了无效值,上述所有操作只会返回display:none 请注意,我已经

我试图在IE9-10去除无效值之前获取style属性的值。到目前为止,我已经尝试了下面的每一种变化-

$0.attributes.style
$0.style
$0.getAttribute('style')

但是,如果我试图设置一个无效的值,我似乎无法访问它-

<div style="display: none; color: ${fake-value}">

</div>

由于IE9-10去除了无效值,上述所有操作只会返回
display:none


请注意,我已经尝试了大量的变体,因此,如果不可能,那么这很好,但是您是否尝试过或者是否可以尝试,除非确认答案可以执行某些操作,否则答案不会有多大帮助:)

您能否在元素上使用自定义属性来保存“无效”数据?比如


然后,也许你可以使用Javascript,将其添加到样式中

这完全是开箱即用的,但是如果您只需要读取属性,为什么不使用outerHTML并从中获取值,比如:

var a = document.getElementById('myDiv').outerHTML;
var i = a.search('color:');
var e = a.lastIndexOf('"');
var result = a.substr(i+6,e - (i+6));
alert(result);
编辑1: 由于前面的答案不起作用,我尝试了一些其他的选择,我唯一能够在
样式
标签中添加内容的方法是:

style="display:none; -ms-custom: test;"
编辑2
如果你需要添加一个没有被IE剥离的自定义样式,你可以在它前面添加
-ms-
,只有IE会读取它,因为它是
-ms
,所以它是安全的

嗯……我想你需要对该元素使用ng样式。Ng样式将以不同的方式进行评估,并在评估之后使用适当的值填充元素的样式。通常,您会在相应的角度指令中放置一个经过计算的元素。在你的情况下,这就是ng风格


例如,
将添加正确的样式,然后添加已评估的样式

不幸的是,由于IE9实现CSS对象模型规范的方式,这是不可能的

如果我们看一下规范,我们可以假设发生了以下情况(我的重点):

解析给定属性的CSS值意味着遵循以下步骤 步骤:

  • 让list是通过调用parse组件列表返回的值 价值来自价值

  • 根据CSS中属性的语法匹配列表 规格

  • 如果上述步骤失败,则返回
    null

  • 返回列表

由于自定义颜色值与color属性的语法不匹配,即返回
null
,基本上在解析时忽略该属性,然后将其显示在DOM中


尽管您已经提到不想这样做,但我再次建议您使用数据属性,这将为您提供一个跨平台的解决方案:

<div style="display: none;" data-color="${fake-value}">


如果您确实无法使用数据属性,另一种选择是以编程方式查看页面的源代码,并根据指定的值对其进行解析。我不建议这样做,但如果这是一个你希望探索的途径,你可以找到一个相关的问题


更新

有趣的是,如果我们查看DOM规范,我们会发现:

而一个实现可能无法识别一个应用程序中的所有CSS属性 CSS声明块,它将提供对所有 在样式表中通过 cssstyle声明接口

因此,作为对我之前答案的更新,我推测IE9错误地解释了规范——在DOM解析期间使用CSSOM
return null
实现(或类似的实现),而不是预期的DOM实现


这就解释了为什么在其他浏览器中会得到预期的结果。

请注意,如果查看源代码,您仍然可以看到剥离的属性值,因此希望IE9中有一些钩子。为什么需要存储假颜色值?为什么不改用数据属性呢?因为我们不想构建像
ng style
这样的属性。大多数框架都允许在属性值中插入字符串,只有IE才适合styleNo,正如前面提到的,我们不想这样做。这不起作用,请确保在尝试答案之前suggedting@PWKad我更新了我的答案,请尝试告诉我们helped@PWKad:我真的不在乎分数,但是,如果你投票否决了人们,他们仍然回复你,至少检查答案并取消你的否决。实际上,所有浏览器都会忽略以
-
开头的样式,并且这些样式是不可接受的样式声明。当然:。这不是棱角分明的,因此ng样式在这里对我们没有任何帮助。评论不用于扩展讨论;这段对话已经结束。