перенаправить загрузку на стороне сервера внутри iframe

0

У меня есть iframe. При нажатии на определенную ссылку внутри iframe происходит проверка ошибки, на стороне сервера и последующем перенаправление происходит со стороны сервера. Теперь перенаправление вызывает загрузку страницы внутри iframe. Есть ли способ сделать перенаправление на родительской странице? Я знаю, что это возможно, если это проверка на стороне клиента. Но это проверка на стороне сервера, и команда перенаправления происходит с сервера. В перенаправлении я также загружаю атрибут ошибки, который появляется как div с ошибкой. Даже это загружается внутри iframe. (Iframe внутри iframe с ошибкой div).

Теги:
redirect
iframe

4 ответа

1

Вот код, на который ссылается @mavrosxristoforos в комментариях. Используйте вместо header() PHP header() или любого другого перенаправления, который вы можете использовать.

<script type="text/javascript">
window.parent.location.href= "http://your-redirect-url-here";
</script>
  • 0
    Дело в том, что проверка и перенаправление происходит на стороне сервера. Я попытался выполнить проверку нулевой проверки в моем jsp атрибута error, который я отправляю вместе с перенаправлением, и я пытался использовать вышеупомянутый javascript, который вы упомянули внутри этой проверки jsp, для перенаправления на родительскую страницу, но это не так. тоже не работает.
  • 0
    Да, проверка все еще может происходить на стороне сервера. Но везде, где у вас был код для запуска перенаправления. INSTEAD, echo / print / output в окне браузера 3 строки JavaScript.
Показать ещё 3 комментария
0

скажем, A - это ваша родительская страница, а B - дочерняя страница внутри фрейма.

при сбое проверки сервера не перенаправляются на страницу A, а B или на страницу с ошибкой C!

это скорее хак, я полагаю, если вы можете сделать хэш-обмен

  • перенаправить на страницу B с /# notvalid, добавленным последним в URL-адресе при неудачной проверке сервера
  • прослушайте событие загрузки iframe, несущего B на родительской странице A, и проверьте, имеет ли iframe src "#notvalid" в конце. если да, покажите ошибку div на родительской странице!
  • 0
    И это именно та проблема, которую он пытается избежать :)
  • 0
    :) он перенаправляет на родительскую страницу изнутри iframe и видит всю родительскую страницу внутри iframe! это вопрос, который он получил, я спросил его.
Показать ещё 3 комментария
0

Если вы не хотите изменять выход сервера, но ищете быстрое и грязное решение, вы можете сделать что-то вроде этого:

См.: iFrame src change event detection?

Вы можете проверить местонахождение перенаправленной страницы (если это имеет значение), и, когда IFRAME изменит местоположение во второй раз (так как первое будет при загрузке IFRAME изначально), вы можете перенаправить свое главное окно на страницу представляет интерес.

(Я думаю, мы могли бы также задать вопрос: почему IFRAME вместо использования запроса Ajax для проверки ввода?)

0

Вы можете общаться между основным окном и iframe, только если они используют один и тот же протокол!

"Правильный" способ сделать это - использовать postMessage. Вы можете найти два примера использования здесь и здесь. Так долго для правильного пути.

Быстрая и грязная:
В следующем примере внешнее окно имеет функцию JS, называемую change(), которая вызывается каждый раз, когда iframe перезагружается. Вы можете использовать его для обнаружения div, который отображается только тогда, когда возникает ошибка, а затем перенаправляется. Пример ниже перенаправляется на сайт ycombinator. Вы можете просмотреть его здесь

<html>
   <head>
   <script type="text/javascript">
     function change(obj){
       var iframe = document.getElementById('iFrm');
       var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
       var obj = innerDoc.getElementById('completed');
       if(obj !== undefined && obj !== null){
           window.location = "https://news.ycombinator.com/";
       }
     }
     </script>         
        </head>
        <body>
         <div class="keuzeDiv">
                <iframe id="iFrm"  src="https://sandbox.plimus.com/jsp/buynow.jsp?contractId=2138644" onLoad="change();" width="100%" height="100%"></iframe>
                </div>
        </body>
</html>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню