我正在开发一个JavaScript library,我需要在DOM元素上设置各种属性。任何避免将属性设置为旧IE中的属性的方法?
例如,DOM元素可能具有所谓的“州”设置属性(一个普通的对象)就可以了:
_('input').get('states')
/* OUTPUT
{
hidden: true,
anotherState: false,
andAnotherOne: true,
}
*/
在IE < 9中,输出将看起来像这样(我了解仅仅是本土传统IE的行为):
<input type="text" value="some value" states="[object Object]">
其他性能将会不定期对DOM元素使用相同的方法,以及设置,并在有冲突的属性,属性的DOM元素上设置的问题可能会弹出( IE < 9 m在这种情况下绑定)。
任何方法来避免这种情况,或者这只是你必须忍受的事情?
编辑澄清
为了让在香草JavaScript的一个例子,说你这样做:
document.getElementById('foo').bar = 'foobar';
在IE小于9的任何版本,在DOM输出将显示如下:
<div id="foo" bar="foobar"></div>
在绝大多数其他浏览器中,这不会发生。
现在,如果你这样做:
document.getElementById('foo').bar = {
a: 'b',
c: 'd'
}
在任何版本的IE小于9,您可以:
<div id="foo" bar="[object Object]"></div>
再次,这并不在大多数其他浏览器发生。
不知道你想要什么......?你在找'JSON.stringfy()'吗? –
@ Karl-AndréGagnon看起来像OP想阻止设置为元素的自定义属性反映到该元素的属性列表。 – Teemu
@ Karl-AndréGagnon,Teemu是正确的。请参阅我的问题的更新版本以获得更多的说明。 –