2017-01-13 3 views
1

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

Это код.

 <a href="promotion.jsp">Promotion</a> 

И вот функция javascript, которую я использовал.

$(document).ready(function(){ 

     var url; 
     $('a').click(function(e){ 

      e.preventDefault(); 
      url = $(this).attr('href'); 
      if(undefined != url){ 
       window.frames["page-wrapper"].src = url; 
       clickFront(); 
      } 
     }); 

     $("button").click(function() { 
      checkUrlandId(url,this.id);   
     }); 

    }); 

clickFront() это функция, включить и отключить некоторые верхние кнопки меню бар функциональные возможности.

Поэтому, когда я нажимаю страницу меню (Утверждения), изменилась. После обновления этой страницы он перенаправляется на главную страницу не на текущую страницу.

Вот два скриншота. Прежде всего, прежде чем нажимать элемент меню, а второй - после нажатия на пункт меню.

First Image

Second Image

После нажатия на пункт меню URL не меняется.

Я читал, что мы можем использовать файлы cookie или javascript localstorage, чтобы сохранить url для этого? Может кто-то мне помочь ... Я новичок в js.

+0

нажав на якорной теге будет загрузить новую страницу, если вы ** не допустить * * this ** По умолчанию ** поведение –

+1

Я не хочу загружать новую страницу. Боковое меню статично, но правая сторона страницы динамическая. –

+0

Вам нужно использовать cookie или хэш, чтобы разрешить обновление. – mplungjan

ответ

0

я ожидал бы window.frames["page-wrapper"].src = url; быть
window.frames["page-wrapper"].location = url;

Во всяком случае. Если вам нужно изменение IFrame пережить обновление и закладки, вам нужно использовать хэш на странице:

$(function(){ 
    var url = location.hash?decodeURIComponent(hash.substring(1)):""; 
    if (url) window.frames["page-wrapper"].location = url; 
    $('a').click(function(e){ 
     e.preventDefault(); 
     url = $(this).attr('href'); 
     if(undefined != url){ 
      location.hash=encodeURIComponent(url); 
      window.frames["page-wrapper"].location = url; 
      clickFront(); 
     } 
    }); 

}); 

Если URL-адрес является внешним, что вам действительно нужна цель.

LocalStorage

$(function(){ 
    var url = localStorage.getItem("url"); 
    if (url) window.frames["page-wrapper"].location = url; 
    $('a').click(function(e){ 
     e.preventDefault(); 
     url = $(this).attr('href'); 
     if(undefined != url){ 
      window.frames["page-wrapper"].location = url; 
      localStorage.setItem("url",url); 
      clickFront(); 
     } 
    }); 

}); 
+0

Используя метод выше, мое боковое меню исчезает. Я использую iframe здесь по какой-то причине. Это мое боковое меню остается таким же, а другие части изменены. –

+0

это не работает. В соответствии с этим URL-адрес меняется, но страница не загружается ... –

+0

Мне нужно было бы увидеть его в действии и проверить консоль – mplungjan

0

Посмотрите на образец ниже, все работает, как ожидалось

var anchors = document.querySelectorAll('a'); 
 
Array.prototype.forEach.call(anchors, function(a) { 
 
    a.onclick = function(e) { 
 
    e.preventDefault(); 
 
    window.frames.frame1.src = a.getAttribute('href'); 
 
    } 
 
});
<ul> 
 
    <li> 
 
    <a href="http://stackoverflow.com">Stackoverflow main page</a> 
 
    </li> 
 
    <li> 
 
    <a href="http://stackoverflow.com/users/2308005/medet-tleukabiluly?tab=profile">My profile</a> 
 
    </li> 
 
    <li> 
 
    <a href="http://stackoverflow.com/questions/41629581/node-js-obtain-access-token">Question: Node.js obtain access token</a> 
 
    </li> 
 
</ul> 
 
<hr /> 
 
<iframe id="frame1" width="500" height="200" src="http://stackoverflow.com/questions/41629578/when-iframe-page-refreshes-it-redirect-to-the-same-page-not-to-the-main-page"></iframe>

+0

Мне нужно загружать внешние HTML-файлы внутри рамки # обертки страницы –