JavaScript объекты, видимые в FireBug, недоступные в коде - PullRequest
5 голосов
/ 01 апреля 2012

В моем коде у меня есть строка, которая выводит текущее окно (которое является видео страницей на YouTube):

Firebug.Console.log(myWindow);

Видно, что объект окна содержит свойство "yt", которое является другим объектом, который можно легко проверить в отладчике:

http://i.imgur.com/lHHns.png

К сожалению, звонит

 Firebug.Console.log(myWindow.yt);

регистрирует "undefined" - почему это так и как я могу получить доступ к этому свойству "yt"?

Редактировать: одно дополнение, которое может быть важным: код, который я пишу, является частью расширения Firefox, поэтому он не работает на самом деле в pgae, а в Chrome - я начинаю думать, что это может быть причиной , Могут ли скрипты chrome быть каким-то образом ограничены в том, что они могут видеть / получать в отличие от кода в тегах скрипта?

Ответы [ 3 ]

2 голосов
/ 02 апреля 2012

Из соображений безопасности расширения Firefox не обращаются к объектам веб-страниц напрямую, а через упаковщик . Эта обертка позволяет вам использовать все свойства, определенные объектами DOM, но все, что добавлено страницей JavaScript, будет невидимым. Вы можете получить доступ к исходному объекту :

Firebug.Console.log(XPCNativeWrapper.wrappedJSObject.yt);

Однако, если вы хотите взаимодействовать с веб-страницей из расширения, вы должны рассмотреть альтернативы, когда веб-страница не может подшутить над вами (например, запустить непривилегированный код в окне содержимого: myWindow.location.href = "javascript:...").

0 голосов
/ 09 ноября 2012

Я видел такую ​​путаницу при использовании асинхронных API.

console.log(obj); показывает содержимое заполненного объекта, но при доступе к свойствам объекта в коде они еще не заполнены из-за асинхронного вызова.

Почему Chrome и Firefox показывают, что все они заполнены, вероятно, является просто проблемой синхронизации, поскольку они, вероятно, также обрабатывают console.log() асинхронно.

0 голосов
/ 01 апреля 2012

Расширения Firefox и Chrome не могут получить доступ к JavaScript на странице по соображениям безопасности.

...