是否有一个JavaScript程序可以列出所有预定义的浏览器主机对象
Is there a JavaScript program that can list all the predefined browser host objects?
什么javascript程序会列出浏览器中"自发"提供的所有本机/主机/平台对象?
如果不能编写这样的程序,是否有其他方法生成这样的列表?
澄清本回答所要求的"本机/主机/平台对象"
例子:
使用window.navigator.userAgent =
"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3"
一些原生JavaScript对象(其中一些恰好是构造函数)
Array, Boolean, Date, Function, Number, Object. RegExp, String
Error, Iterator, JSON, Math
一些DOM主机对象
Image, Option
其他平台对象
Worker, XMLHttpRequest, XPCNativeWrapper
引用:
- 平台对象在W3C WebIDL接口定义语言规范 中定义
- W3C HTML 5规范 W3C DOM
- Mozilla JavaScript技术概述 Mozilla DOM
- Mozilla ECMAScript引用 <
- ecma262 - 5. com/gh>
参见
- 什么是预定义的基本构造函数?
- 使用Javascript列出DOM文档的属性和方法
这是最低限度有效的:
javascript:
alert("using:'n"+window.navigator.userAgent);
list=[];
for( i in window) list.push(i);
alert("found:'n"+list.sort().join("'t"));
list=[];
for( i in window) list.push([typeof eval("window."+i),i].join("'t"));
alert(["found:",list.sort().join("'n--------------'n")].join("'n"))
生产
using:
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.3)
Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3
found:
Components XPCNativeWrapper XPCSafeJSObjectWrapper addEventListener
alert applicationCache atob back blur btoa captureEvents
clearInterval clearTimeout close closed confirm content controllers
crypto defaultStatus directories disableExternalCapture dispatchEvent
document dump enableExternalCapture find focus forward
frameElement frames fullScreen getComputedStyle getInterface
getSelection globalStorage history home i innerHeight
innerWidth length list localStorage location locationbar
menubar moveBy moveTo mozInnerScreenX mozInnerScreenY name navigator
netscape open openDialog opener outerHeight outerWidth
pageXOffset pageYOffset parent personalbar pkcs11 postMessage
print prompt releaseEvents removeEventListener resizeBy
resizeTo routeEvent screen screenX screenY scroll scrollBy
scrollByLines scrollByPages scrollMaxX scrollMaxY scrollTo
scrollX scrollY scrollbars self sessionStorage setInterval
setResizable setTimeout showModalDialog sizeToContent status
statusbar stop toolbar top updateCommands window
和(选择性编辑)
found:
...
--------------
function $
--------------
function PR_normalizedHtml
--------------
function XPCNativeWrapper
--------------
function XPCSafeJSObjectWrapper
--------------
...
--------------
object Components
--------------
object Markdown
--------------
object PR
--------------
object StackExchange
--------------
...
--------------
object jQuery15205241375142988156
--------------
...
--------------
object window
--------------
...
我不确定你想做什么,但如果你想从windows对象的所有方法(方法通常调用没有对象实例前缀),你可以这样做:
var stuff = new Array(); for(var i in window){ stuff.push(window[i]); }
然后,您可以使用stuff数组来查看window元素中包含的所有内容(作为对象)。当然,不建议在整个数组中使用方法。请注意,这将列出window元素上的所有属性。
如果你不需要别的东西,你能不能给我们一个例子,说明你想从哪些元素中获得哪些数据?
不同的浏览器在window对象上公开不同的内容。Chrome似乎暴露了几乎所有可以想到的全局命名空间,包括所有内置类型,如数组和布尔。Firefox似乎采取了相反的策略——尽可能少地暴露。
您可以在这里看到任何给定的浏览器暴露的内容:http://jsfiddle.net/jfriend00/6KRpK/.
我不知道有任何规范要求所有全局识别的名称(无论是内置类型还是全局语言方法,如parseInt()
)都可以由脚本枚举,而不是必须在window对象上。
因此,我认为这意味着如果你想要一个在所有浏览器中都有效的方法,你就不走运了。目前,你可以从Chrome中获得一个相当不错的列表(尽管有些是特定于Chrome的)。
一些类似的领域,在这些其他的帖子:
列表的全局用户定义的函数在JavaScript?
在IE中列出全局变量- 带有预定义网格的Packey JS
- SVG使用Javascript将形状平滑地变形为其他预定义的形状
- 如何在不预定义的情况下将javascript函数传递到另一个函数中
- 没有预定义宽度的固定元素最初放在引导容器中,不会从父元素继承宽度
- 用javascript为预定义对象设置原型
- AngularJS:如何按照预定义的顺序执行函数
- jqGrid - 如何通过自定义格式化程序提供多个预定义的格式化程序
- 如何使用预定义字符串列表“动态”生成 HTML 代码
- 使用预定义函数的NodeJS async.series
- 如何在HTML中用两个预定义的值绑定选择选项,以在mongodb中插入数据
- CodeMirror编辑器自动完成预定义单词
- 为什么JavaScript闭包不能与预定义的函数一起使用
- 要在html5音频中静音的预定义部分
- 如何在剑道网格中添加具有预定义数据的新行
- 如何通过colResizable设置列的预定义宽度
- ASP.NET网页-使用脚本显示由预定义日期和时间指定的图像/文本
- 在 JavaScript 中创建具有单个预定义选项的随机数组
- 使用.crx将预定义的数据发送到浏览器本地存储
- 是否有一个JavaScript程序可以列出所有预定义的浏览器主机对象
- 如何从本地web浏览器连接到远程telnet服务器并发送预定义命令