我想列举各种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>
这段代码对我来说很好,在IE9中也可以正常工作。
http://jsbin.com/ivukus/edit#preview
如果指定DOCTYPE,这将在IE中正常工作。如果没有DOCTYPE
,IE将以Quirks模式渲染,这本质上是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
.
.
.