Я разработал приложение, которое имеет список элементов в одном кадре; когда кто-то нажимает на элемент, он что-то делает в другом кадре (загружает изображение).
Раньше работал нормально во всех браузерах, включая Chrome 3; теперь он все еще отлично работает в Firefox, но в последних версиях Chrome (я считаю, начиная с 4) он выдает эту ошибку:
Небезопасная попытка JavaScript получить доступ к фрейму с URL (...) из фрейма с URL (...).
Домены, протоколы и порты должны совпадать.
Это, очевидно, "функция" безопасности, но возможно ли ее обойти?
Вот простой тест:
index.html:
<html>
<frameset cols="50%,50%">
<frame src="left.html" name="left"/>
<frame src="right.html" name="right"/>
</frameset>
</html>
left.html:
<html>
<body>
<a href="javascript:parent.right.test('hello');">click me</a>
</body>
</html>
right.html:
<html>
<body>
<script>
function test(msg) {
alert(msg);
}
</script>
</body>
</html>
Вышеописанное работает в Firefox 3.6 и Chrome 3, но в Chrome 5 выдает вышеуказанную ошибку ...
Редактировать
- добавил атрибут @cols для элемента frameset
- фактически он работает в Chrome тогда и только тогда, когда страницы обслуживаются по протоколу http (и из того же домена), но моя проблема в том, что страницы локальные и обслуживаются из файла: // protocol . Затем он работает в Firefox (все версии) и Chrome 3, но не в Chrome 5 (у меня нет Chrome 4, поэтому я не уверен насчет этой конкретной версии (и не знаю, возможно ли вообще загрузить конкретную версию Chrome). ?) - но для Chrome 5 я уверен, что он не работает).