我希望枚举各种JavaScript对象的所有可用函数,甚至是用JavaScript创建的HTML元素。例如,以下在Chrome和FireFox中都很有效:
<html>
<body>
<script>
var object = document.createElement( "select" );
for( var prop in object )
{
document.body.innerHTML += "" + prop + "; // " + typeof object[prop] + "<br/>";
}
</script>
</body>
</html>
这将输出对象的所有属性,包括该对象可用的函数,例如:
...
insertAdjacentHTML; // function
insertAdjacentText; // function
insertAdjacentElement; // function
getAttribute; // function
setAttribute; // function
removeAttribute; // function
getAttributeNode; // function
...
然而,这在IE9中不起作用,你得到的只是字符串/数字/对象属性,而不是任何函数属性。
我的问题是如何在运行时发现IE9中的对象导出了哪些函数名?
非常感谢提前。
更新:添加doctype可以按预期运行。
<!DOCTYPE html>
<body>
<script>
var object = document.createElement( "select" );
for( var prop in object )
{
document.body.innerHTML += "" + prop + "; // " + typeof object[prop] + "<br/>";
}
</script>
</body>
</html>
答案 0 :(得分:4)
该代码对我来说很好,在IE9中可以正常工作。
答案 1 :(得分:2)
如果指定DOCTYPE,这将在IE中正常工作。如果没有DOCTYPE
,IE将呈现Quirks Mode,这实际上是IE 5.5的行为,这将极大地影响IE的Javascript支持。
<!doctype html>
<html>
<body>
<script>
var object = document.createElement( "select" );
for( var prop in object )
{
document.body.innerHTML += "" + prop + "; // " + typeof object[prop] + "<br/>";
}
</script>
</body>
</html>
结果:
form; // object
length; // number
multiple; // boolean
name; // string
options; // object
selectedIndex; // number
size; // number
type; // string
value; // string
dataFld; // string
dataFormatAs; // string
dataSrc; // string
add; // function
item; // function
namedItem; // function
remove; // function
.
.
.