枚举JavaScript对象函数



我想列举各种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
.
.
.

相关内容

  • 没有找到相关文章

最新更新