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

时间:2011-08-17 01:46:54

标签: javascript dom

什么javascript程序会列出浏览器中“自发”提供的所有本机/主机/平台对象?

如果没有这样的程序可以写,还有其他方法可以生成这样的列表吗?


根据answer

的要求澄清“本机/主机/平台对象”

示例:

使用

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

的引用:

另见


这是最低效的:

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
--------------
...

2 个答案:

答案 0 :(得分:0)

我不确定你想做什么,但如果你想要windows对象中的所有方法(通常在没有对象实例前缀的情况下调用的方法),你可以这样做:

var stuff = new Array(); for(var i in window){ stuff.push(window[i]); }

然后,您可以使用stuff数组来查看窗口元素中包含的所有内容(作为对象)。当然,通过该数组使用方法并不可取。请注意,这将列出窗口元素上的所有属性。

如果您不想要其他内容,您能否向我们提供一个示例,说明您希望从哪些元素中获取哪些数据?

答案 1 :(得分:0)

不同的浏览器会在窗口对象上显示不同的内容。 Chrome似乎几乎暴露了人们可以想到的全局命名空间,包括所有内置类型,如Array和Boolean。 Firefox似乎有相反的策略 - 尽可能少地暴露出来。

您可以看到任何给定的浏览器在这个小提琴中公开的内容:http://jsfiddle.net/jfriend00/6KRpK/

我不知道任何要求所有全局认可的名称(无论是内置类型还是全局语言方法,如parseInt())的规范都可以由除窗口上必须包含的脚本之外的脚本枚举对象

因此,我认为如果你想要一个适用于所有浏览器的方法,这意味着你运气不好。目前,您可以从Chrome中获得一个非常好的列表(尽管有一些是特定于Chrome的)。不是这样的。

这些其他SO帖子涵盖了一些类似的领域:

List of global user defined functions in JavaScript?

JavaScript: List global variables in IE