Есть ли программа JavaScript, которая может перечислить все предопределенные хост-объекты браузера? - PullRequest
0 голосов
/ 17 августа 2011

Какая javascript-программа перечислит все нативные / хост / платформенные объекты, которые предоставляются "спонтанно" в браузере?

Если такая программа не может быть написана, есть ли какой-либо другой способ создания такого списка?


Разъяснение "нативных / узлов / объектов платформы" в соответствии с запросом этого ответа

Примеры:

с использованием
window.navigator.userAgent =<br> "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 голосов
/ 17 августа 2011

Различные браузеры выставляют разные вещи на объекте окна. Похоже, что Chrome раскрывает практически все, что можно представить в глобальном пространстве имен, включая все встроенные типы, такие как Array и Boolean. У Firefox, похоже, противоположная тактика - выставлять как можно меньше.

В этой скрипке вы можете увидеть, что предоставляет любой браузер: http://jsfiddle.net/jfriend00/6KRpK/.

Мне неизвестна какая-либо спецификация, которая требует, чтобы все глобально распознаваемые имена (будь то встроенные типы или методы глобального языка, такие как parseInt()) были перечислимы сценарием, отличным от тех, которые должны быть в объекте окна.

Как таковой, я думаю, это означает, что вам не повезло, если вы хотите метод, который работает во всех браузерах. На данный момент вы можете получить довольно хороший список (хотя некоторые из них относятся к Chrome) из Chrome. Не так из Firefox.

Некоторая подобная территория, охваченная этими другими сообщениями SO:

Список глобальных пользовательских функций в JavaScript?

JavaScript: список глобальных переменных в IE

0 голосов
/ 17 августа 2011

Я не уверен, что вы хотите сделать, но если вам нужны все методы из объекта Windows (методы, которые обычно вызываются без префикса экземпляра объекта), вы можете просто сделать это:

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

Затем вы можете использовать массив stuff, чтобы увидеть ВСЕ, что содержится в элементе окна (как объекты). Конечно, не рекомендуется использовать методы через этот массив. Обратите внимание, что здесь будут перечислены ВСЕ свойства элемента window.

Если вы не хотите что-то еще, не могли бы вы предоставить нам пример того, какие данные вы хотели бы получить от каких элементов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...