Небезопасная попытка JavaScript для доступа к фрейму с URL - PullRequest
9 голосов
/ 06 сентября 2011

У меня есть страница с 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 ]

2 голосов
/ 14 ноября 2011

Во-первых, убедитесь, что на обе страницы ссылаются, используя атрибут 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 (глобальное пространство имен)

Удачи в этом: -)

2 голосов
/ 25 октября 2011

Chrome не позволяет вам этого делать.Код из Iframe не может получить доступ к родительскому коду.

1 голос
/ 13 апреля 2012

Возможно, родительский фрейм установил значение document.domain, отличное от «samedomain». Обновите свойство document.domain в iframe js до значения, установленного в родительском фрейме, и оно должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...