什么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
--------------
...
答案 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帖子涵盖了一些类似的领域: