Небезопасная попытка JavaScript для доступа к фрейму с URL
У меня есть страница с Iframe и Javascript из Iframe, которые имеют доступ к функции родительского фрейма. Страницы находятся на одном сервере (это не междоменный сценарий), у меня нет проблем с FF и IE, но когда я использую его в Chrome, у меня появляется сообщение ниже.
Небезопасная попытка JavaScript получить доступ к фрейму с URL-адресом http://samedomain:51700/irj/servlet/prt/portal/prtroot/CRMApp73.StoricoApp из фрейма с URL-адресом http://samedomain:51700/irj/servlet/prt/portal/prtroot/CRMApp73.CRMOProxy. Домены, протоколы и порты должны совпадать.
Как я могу решить эту проблему? Я ищу в Google с 4 часов. Я надеюсь, что кто-то может помочь мне.
РЕДАКТИРОВАТЬ: код
Это JavaScript на странице iframe. Этот JavaScript вызывает функцию Javascript родительского фрейма "setUfficioPostale". В этот момент Chrome выдает ошибку "Небезопасный доступ...".
<script>
window.parent.setUfficioPostale(map);
</script>
Это Javascript в родительском фрейме для отправки формы. Это для отправки скрытой формы со скрытыми параметрами на страницу, загруженную в iframe.
function onAltroUfficioClick(){
document.getElementById("hiddenParams").submit();
$('#framePosteMaps').show();
}
Это определение iframe на родительской странице.
<iframe id="framePosteMaps" scrolling="no" name="framePosteMaps"></iframe>
Это форма с целевым атрибутом для отправки параметров на страницу iframe.
<form id="hiddenParams" target="framePosteMaps" action="http://samedomain:51700/irj/servlet/prt/portal/prtroot/TestFrameRC.SimPerProxy" method="POST">
<input type="hidden" name="distanza" value="10">
<input type="hidden" name="cliente" value="Retail">
....................
</form>
3 ответа
Chrome не позволяет вам сделать это. Код из Iframe не может получить доступ к родительскому коду.
Во-первых, убедитесь, что на обе страницы ссылаются с использованием атрибута SRC iframe одинаково, я имею в виду:
http://samedomain:51700/irj/
http://samedomain:51700/irj/
поскольку возможно, что даже если они работают на одной машине, один из этих iFrames называется следующим образом:
http://localhost:51700/irj/
и другие:
http://MachineId:51700/irj/
или любая другая комбинация.
Вы можете проверить это, изучив код с помощью инструментов разработчика во всех современных браузерах.
Chrome позволяет вызывать родительские функции, если они находятся в одном домене (я делаю это каждый день), поэтому проблем быть не должно.
Я использую эту функцию для доступа к детям iFrames:
var getIframe = function (id) {
if ($.browser.mozilla) return document.getElementById(id).contentWindow;
return window.frames[id];
};
и просто "parent.yourParentFunction()", когда вы хотите получить доступ к функции в родительском.
Убедитесь, что родительская функция назначена объекту Window (глобальное пространство имен)
Удачи с этим:-)
В родительском фрейме может быть установлено значение document.domain, отличное от "samedomain". Обновите свойство document.domain в iframe js до значения, установленного в родительском фрейме, и оно должно работать.