Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > window.top в chrom


Автор: nepster 8.12.2011, 03:02
Обращаюсь из фрейма к элементу вот таким образом 

Код

top.document.getElementById("img_inner").innerHTML = '...';


Везде в любом браузере работает, кроме хрома. Подскажите пожалуйста в чем проблема ? 

Автор: Amphiluke 8.12.2011, 13:17
Если вы проверяете локально, то Chrome вполне может ругаться об ограничениях политики безопасности.
Проверьте в консоли наличие сообщений типа
Цитата(Google Chrome)

Unsafe JavaScript attempt to access frame with URL file:///[...skipped...] from frame with URL file:///[...skipped...]. Domains, protocols and ports must match.


На сервере эта ошибка, скорее всего, проявляться не будет. Даже на локальном. (Ну при условии, конечно, что сообщающиеся документы с одного домена).

Автор: nepster 8.12.2011, 15:17
Код

Unsafe JavaScript attempt to access frame with URL file:///C:/Documents%20and%20Settings/NEPSTER/%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9%20%D1%81%D1%82%D0%BE%D0%BB/%D0%93%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%20%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D0%BA%D0%B8/index.html from frame with URL file:///C:/Documents%20and%20Settings/NEPSTER/%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9%20%D1%81%D1%82%D0%BE%D0%BB/%D0%93%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%20%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D0%BA%D0%B8/generator_card/templates/postcard.html. Domains, protocols and ports must match.
function.js:66Uncaught TypeError: Cannot call method 'getElementById' of undefined


Открываю локально. Такое задание для экзамена,  могу использовать только js и никакого сервера. Если проверят в хроме я пропал ))) 

Можно ли как то в политиках безопасности это отключить? 

Автор: Amphiluke 8.12.2011, 15:49
Есть решение, основанное на запуске браузера с отключенным контролем за соблюдением политики безопасности.
Код

<Папка, где располагается исполняемый файл браузера>\chrome.exe --disable-web-security

При запуске с ключом --disable-web-security ошибка проявляться не будет.

Автор: nepster 8.12.2011, 16:02
Не много не понял, подскажите пожалуйста куда это прописывать в cmd ? 


Автор: Amphiluke 8.12.2011, 16:06
Можно через cmd, но не обязательно. Если есть желание, можно в свойствах ярлыка дописать этот ключ (в поле «Объект») после полного пути до файла.
Только не забудьте потом удалить!  smile 

Автор: nepster 8.12.2011, 21:06
прописал, запустил, запустился без изменений 

Автор: Amphiluke 8.12.2011, 22:25
Не знаю, у меня заработало без проблем. Возможно, у вас какая-то не такая версия браузера или что-то не так делаете. smile Учтите, что документ с фреймом нужно не двойным кликом по файлу открывать, а сначала запускать браузер через исправленный ярлык (с ключом --disable-web-security), а потом в адресную строку вводить (или копировать) путь до вашего документа с фреймами.
Если просто открыть документ двойным кликом по иконке, браузер запустится без параметра. Если надо чтобы браузер запускался с ключом --disable-web-security всегда, независимо от способа открытия, придется, скорее всего, изменить пару записей в реестре.
Попробуйте, поищите другие способы. Возможно, есть недокументированные возможности браузера, позволяющие отрубать политику безопасности для протокола file:/// через конфигурацинные файлы или на какой-нибудь из страниц настроек chrome:что-нибудь

Автор: nepster 8.12.2011, 22:37
ага, понял. Я просто открывал и перетаскивал нужный файл. Прописал полный адрес и все заработало. Большое спасибо )) 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)