powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Обработчик изменения истории в браузере для iframe некорректно работает
2 сообщений из 2, страница 1 из 1
Обработчик изменения истории в браузере для iframe некорректно работает
    #39024874
vadval15
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При нажатии ссылки её обработчик вставляет изображение в iframe с соответствующим изменением адресной строки браузера:
1. Фрагмент главной страницы HTML
Код: html
1.
2.
3.
4.
5.
<form name="F1" id="F1" action="http://site.com/cgi-bin/cgiproject1.cgi" method="POST" target="ram">
  <input type="text" name="E1" id="E1" style="display: none" value="" maxlength=1>
  <input type="submit" name="B1" id="B1" style="display: none" value="">
 </form>
 <iframe name="ram" id="ram" style="position: absolute; left: 46%; top: 200px; width: 540px; height: 484px" FRAMEBORDER=0 SCROLLING="no"></iframe>


2. Фрагмент загружаемого содержимого IFRAME
Код: html
1.
2.
3.
4.
5.
6.
7.
<BODY ONLOAD="setupHistoryClicks()">';
 <div id="gam" style="position: absolute; left: 2px; top: 2px; color: white; height: 460px; width: 536px; background-color: #f16529">
 <p><a id="photoaddr" href="http://site.com/tst/name1.html">Addr &gt;</a></p>;
 <figure id="photo"><img id="photoimg" src="http://site.com/tst/gam/photo1.jpg" width="500" height="375">
 <figcaption>Text1</figcaption></figure>
 </div>
</BODY>


3. Обработчик события CLICK
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
function swapPhot(href) {
  ct=["name1.html","name2.html","name3.html","name4.html","name5.html","name6.html"];
  var j,ck=href.split("/").pop();
  for (var i=0;i<6;i++){if (ck==ct[i]){j=i;}}
  var bd=String(j);
   document.getElementById('E1').value=bd;
   document.forms.F1.submit();
  return true;
}
function addClicker(link) {
  link.addEventListener("click", function(e) {
  if (swapPhot(link.href)) {
   parent.history.pushState(null, null, link.href);
   e.preventDefault();}}, true);
}
function setupHistoryClicks() {
  addClicker(document.getElementById("photoaddr"));
}


При попытке навигации по сайту с помощью соответствующих кнопок обработчик данного события вначале ведёт себя так, как будто записи в истории продублировались, а затем последние вообще начинают неожиданно пропадать:
4. Обработчик события POPSTATE
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
function supports_history_api() {
  return !!(window.history && history.pushState);
}
function swapPhoto(href) {
  ct=["name1.html","name2.html","name3.html","name4.html","name5.html","name6.html"];
  var j,ck=href.split("/").pop();
  for (var i=0;i<6;i++){if (ck==ct[i]){j=i;}}
  var bd=String(j);
   document.getElementById('E1').value=bd;
   document.forms.F1.submit();
  return true;
}
window.onload = function() { var c="name1.html";
  if (!supports_history_api()) {return;}
  swapPhoto(c);
  window.setTimeout(function() {
    window.addEventListener("popstate", function(e) {e.preventDefault();
    swapPhoto(location.pathname);
    }, false);    
  }, 1);
}


В итоге возникает проблема: при использовании iframe навигация по сайту становится практически невозможной, в то время как при использовании компонента XMLHttpRequest с аналогичными обработчиками событий всё работает нормально. Буду признателен за объяснение причины указанной проблемы.
...
Рейтинг: 0 / 0
Обработчик изменения истории в браузере для iframe некорректно работает
    #39024877
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadval15 Буду признателен за объяснение причины указанной проблемы.это баг.
или фича, если работает одинаково во всех браузерах.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Обработчик изменения истории в браузере для iframe некорректно работает
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]