Google Chrome UserScript - работа с другими окнами и связанными руками - PullRequest
3 голосов
/ 31 октября 2010

У меня есть небольшая проблема с пользовательскими скриптами в Google Chrome, а точнее с доступом к окну объекта iframe.Очень выполнимо через консоль Google Chrome, очень невозможно через UserScript или так кажется.Если честно, кажется, что это было сделано специально, как если бы была какая-то причина, по которой мне не разрешен доступ к другим объектам окна.Могу я спросить, в чем проблема Chrome?Я действительно не понимаю, почему пользовательский код должен иметь меньший доступ к javascript, чем обычный скрипт, каковы последствия?Кстати, да, iframe находится в том же домене и протоколе.(

1 Ответ

2 голосов
/ 31 октября 2010

UnsafeWindow не поддерживается Chrome, попробуйте TamperMonkey, уверен, что он предоставляет доступ только для чтения к этой переменной.

contentWindow.document не доступен для Chrome.contentDocument должен работать.

Кроме того, XMLHttpRequest для междоменных доменов также не поддерживается.Большинство из них в целях безопасности.Пользовательские скрипты в Chrome являются скриптами контента, они не могут получить доступ к функциям / переменным, определенным веб-страницами или другими скриптами контента.Это главным образом для безопасности и изоляции сценариев, чтобы предотвратить конфликт сценариев друг с другом.

Что касается document.getElementsByName ('iframe') [0] .contentWindow, я думаю, это потому, что вы пытаетесьдобавить в свой iframe.Для начала, не называйте ваш iframe как iframe, это всегда очень плохая практика.

Вместо того, чтобы пытаться добавить его в innerHTML тела, используйте appendChild () и добавьте новый объект iframe в документ..Body.Кроме того, вместо document.getElementsByName, попробуйте document.body.getElementsByName.

Я пишу сценарии greasemonkey для firefox, и Chrome кажется слишком ограничительным.И я надеюсь, что вы знаете о взломе локаций для пользовательских скриптов.Проверьте http://wiki.greasespot.net/Location_hack.Вы можете использовать Javascript в своих пользовательских скриптах;) И просто чтобы сообщить вам прямо сейчас, я бы ОЧЕНЬ предостерегал от возни с фреймами и пользовательских скриптов.Я написал скрипт для Greasemonkey, пытался в течение 6 месяцев, но почему-то, когда я вовлекаю код в iframe, половину времени, этот результат не определен, и я никогда не сталкиваюсь с этой проблемой с javascript.Кроме того, если вы вставляете объекты скрипта .js в документ из пользовательских скриптов, новый код все равно каким-то образом затрагивается, и поэтому случайным образом элементы отображаются как неопределенные.После 6 месяцев попыток я сдался, и у меня просто есть букмарклет, который просто вставляет скрипт .js в документы вручную.Конечно, вам не нужно этого делать, вы можете просто использовать хак для определения местоположения, чтобы внедрить код из пользовательского скрипта.Но что касается написания целых сценариев на основе пользовательских сценариев для iframes, я остаюсь далеко ...

...