Я пытаюсь идентифицировать объекты в JavaScript. Моя проблема заключается в том, что DOM-узлы msie не являются экземплярами какого-либо потомка Object, поэтому я не могу установить или получить свойство для такого экземпляра. Я пытаюсь обойти это с помощью поведения htc (поведение может иметь только узел со стилем, так что это наполовину решение, но лучше чем ничего):
identity.htc:
<PUBLIC:COMPONENT>
<script type="text/javascript">
for(property in Object.prototype)
{
element[property]=Object.prototype[property];
}
</script>
</PUBLIC:COMPONENT>
test.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>javascript identity workaround</title>
<!--[if IE]>
<style type="text/css">
*{behavior:url(identity.htc)}
</style>
<![endif]-->
<script type="text/javascript">
(function ()
{
var i=0;
var table={};
Object.prototype.identity=function ()
{
if (!this.__hashcode__)
{
this.__hashcode__=++i;
table[i]=this;
}
return this.__hashcode__;
};
Object.identify=function (i)
{
return table[i];
};
})();
window.onload=function ()
{
var body=document.getElementsByTagName("body")[0];
var existingElement=document.getElementById("existingElement");
var newElement=document.createElement("div");
newElement.addBehavior("identity.htc");
alert(body.identity()); //1
alert(existingElement.identity()); //2
alert(newElement.identity()); // expected: 3, real: method not supported
};
</script>
</head>
<body>
<div id="existingElement"></div>
</body>
</html>
Моя проблема в том, что я не могу использовать метод идентификации для вновь созданных элементов. Я попытался добавить поведение с помощью метода addBehavior, но это не помогло. У кого-нибудь есть решение для этого?