2013-10-24 3 views
0

На моем веб-сайте у меня есть сценарий jQuery, который исчезает в теле страницы, а затем, когда пользователь нажимает на относительную ссылку, тело исчезает и перенаправляет пользователя на новую страницу и сценарий затем начинается снова.Как перенаправить страницу в iframe с помощью jQuery

Мой коллега сообщил мне, что было бы лучше, если бы основной контент был помещен в iframe, чтобы прекратить обновление всего тела при смене страниц, но проблема в том, что когда пользователь нажимает на относительную ссылку, iframe исчезает но вместо новой страницы, ориентированной на iframe, она просто открывает страницу.

Как исправить это? Я думаю, что ошибка возникает после строки $("body").fadeIn(2000);.

<script type="text/javascript" src="jquery-2.0.3.min.js"></script> 
    <script type="text/javascript"> 
    $(document).ready(function() { 
     $("body").css("display", "none"); 
     $("body").fadeIn(2000); 
     $(".transition").click(function (event) { 
      event.preventDefault(); 
      linkLocation = this.href; 
      $("iframe").fadeOut(1000, redirectPage); 
     }); 

     function redirectPage() { 
      window.location = linkLocation; 
     } 
    }); 
    </script> 

    <a href="competition.html" class="transition" target="iframe">Home</a> 

    <iframe src="main.html" name="iframe" seamless="seamless" width="800" height="800"> 
    </iframe> 
+0

Почему бы не использовать разделительные divs (разделы) для этого? поместите все, что вам нужно на одной странице, и покажите/спрячьте его по запросу. – paka

+0

Я просто попробовал, ваш код отлично работает, накладывая ссылку на ссылку. Я получаю новую страницу в iframe. –

+0

Содержимое, которое открывается в iframe, не содержит ссылок, только текст. Все относительные ссылки находятся на родительской странице. Если вы сделали то, что я сделал, и это сработало, мне придется вернуться и попробовать снова LOL. – RoyalSwish

ответ

0

вы не можете изменить расположение окна Iframe, потому что много раз это не разрешено. Из-за соображений безопасности некоторые веб-сайты установить X-Frame-Options для SAMEORIGIN вы можете проверить это, просто изменить

//your syntax is wrong here see below for correct 

window.location = linkLocation

в

//correct way to change the location of iframe window 

window.frames['yourframeName'].location=linkLocation

и <a> ' s link href to http://www.google.com

Теперь посмотрите на ошибку в консоли.

Следовательно, ваш синтаксис неверен, вы не меняете местоположение вашего iframe, вы меняете суматоху своей главной страницы (окна), которая содержит целевой iframe. Таким образом, исправление для вашей работы -

function redirectPage() { 
     $('iframe').attr('src',linkLocation); 
     $('iframe').fadeIn() 
    } 
+0

Правильно, ваше предложение сработало ... вроде. Теперь я могу получить источник iframe для изменения на новую страницу, но теперь, когда я нажимаю на другую относительную ссылку, источник iframe остается прежним. EDIT - я выяснил причину. Я нажал ссылку на страницу, на которой хранится iframe, поэтому скрипт застрял. Я изменил href на google для тестирования, и скрипт работает отлично! Я проверю ваш ответ на моем фактическом сайте, прежде чем принимать решение. – RoyalSwish

0

Использование document.getElementById("iframe").src изменить атрибут ГКЗ фрейма, и установив его на щелкнули ссылку HREF.

Также вы должны получить HREF помощью $(this).attr("href");

<script type="text/javascript" src="jquery-2.0.3.min.js"></script> 
    <script type="text/javascript"> 
    $(document).ready(function() { 
     $("body").css("display", "none"); 
     $("body").fadeIn(2000); 
     $(".transition").click(function (event) { 
      event.preventDefault(); 
      linkLocation = $(this).attr("href"); 
      $("iframe").fadeOut(1000, redirectPage(linkLocation)); 
     }); 

     function redirectPage(url) { 
      document.getElementById("iframe").src = url; 
     } 
    }); 
    </script> 

    <a href="competition.html" class="transition" target="iframe">Home</a> 

    <iframe src="main.html" id="iframe" name="iframe" seamless="seamless" width="800" height="800"> 
    </iframe> 
Смежные вопросы