typeof для элементов плагина html - PullRequest
0 голосов
/ 18 марта 2010

При использовании ECMAScripts typeof на элементах плагина (т.е. embed или object) Safari & FireFox возвращает "function":

typeof(window.document['myPlugin']) // "function"

Это не может повлиять на сторону плагина, так как браузер не вызывает плагин здесь. Как ни странно, в IE та же строка оценивается как "object".

Это просто зависящее от реализации поведение согласно ECMAScript §11.4.3 или я что-то здесь упускаю?

1 Ответ

1 голос
/ 18 марта 2010

Спецификации очень расплывчаты, когда речь идет о том, как typeof должен вести себя с объектом плагина, так как ECMAScript не был написан с учетом плагинов. Следовательно, в IE с элементом управления activex он будет склонен отвечать «объектом», потому что именно так они решили с этим справиться; Firefox и я полагаем, что оба Safari отвечают «функцией», потому что именно так они решили с этим справиться.

Оба ответа имеют смысл; помните, что когда вы получаете доступ к плагину с помощью document.getElementById ("myPlugin"), вы не просто получаете ссылку на плагин, вы получаете ссылку на элемент HTML, в котором размещается плагин, что происходит с вызовами прокси плагин. Будучи HTML-элементом, он имеет другие свойства и методы, о которых вы даже не знаете.

Кажется, что в этом случае объект будет иметь больше смысла, но объект обычно не имеет функции по умолчанию, поэтому я предполагаю, что firefox решил ответить, что это функция (), потому что нет способ в NPAPI запросить, чтобы видеть, существует ли функция по умолчанию, кроме вызова InvokeDefault. хотя вы также можете вызывать метод по умолчанию в интерфейсе ActiveX IDispatch, на самом деле это скорее побочный эффект, чем конструктивная особенность.

Не очень научный ответ, но тот, который может помочь.

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