是否有一个JavaScript程序可以列出所有预定义的浏览器主机对象

Is there a JavaScript program that can list all the predefined browser host objects?

本文关键字:预定义 浏览器 对象 主机 JavaScript 有一个 程序 是否      更新时间:2023-09-26

什么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中列出全局变量