История pushState в iframe, засягаща оформлението на родителския прозорец в Chrome?

Имам iframe, в който pushState се задейства, за да предостави на потребителя възможността да преглежда назад и напред. Този iframe има някаква трансформация, приложена към него и родителският прозорец реагира на движение на мишката, актуализирайки perspective-origin.

Вижте въпросната страница.

Всичко е наред в Safari, но когато сърфирате назад в историята с Chrome, оформлението на родителя се разваля ужасно. Това ми звучи налудничаво, тъй като съдържанието на iframe никога не трябва да влияе върху оформлението на родителския прозорец.

За да тествате, можете да прегледате няколко раздела във вградената рамка, след което щракнете върху бутона за връщане назад в браузъра. Също така имайте предвид, че ако отидете в раздела „Хора“ и отворите някой от хората със снимка, бутонът „Назад“ горе вляво извиква същата функция, свързана с pop state (furnax.goBack), без да засяга родителския прозорец.

Или това е грешка, или преглеждането на хронологията прави повече, отколкото си мисля.

Надявам се, че някой има някаква представа.


Манипулатор на Popstate:

$(window).on("popstate", function () {
  if (furnax.popStoryEnabled) furnax.goBack();
});

GoBack функция:

goBack: function () {
  var myHistory = tempDb.getItem("prev").split(",");
  var to = "";
  if (myHistory != "") {
    to = "#" + document.getElementById(myHistory[myHistory.length - 1]).id;
  } else {
    to = "#" + $(".view").first().attr("id");
  }
  furnax.load(to, "pushright", true);
  myHistory.pop();
  tempDb.setItem("prev", myHistory.toString());
},

person Francesco Frapporti    schedule 09.11.2014    source източник
comment
Разбрахте ли някога това? Имам същия проблем.   -  person Matthew Harrison    schedule 26.11.2014
comment
не! Трябваше да премина към други проекти. Но подозирам, че това зависи от неправилно обработване на някои състояния на хронологията, което след това задейства някаква грешка в Chrome.   -  person Francesco Frapporti    schedule 26.11.2014


Отговори (1)


Това се случва при мен както в Chrome 41, така и в Safari 8 на OS X 10.10.2. Не мисля, че проблемът е в pushState. Вярвам, че това, което се случва, е, че когато промените URL адреса в iframe, браузърът поставя фокус върху iframe и автоматично превърта документа, за да покаже пълния iframe.

Вярвам, че е подобно на грешка, която изпитвам при фокусирането върху входове в CSS трансформиран iframe. Грешка в Webkit #143100, грешка в Chromium #470891.

Не съм сигурен дали вашата ситуация се квалифицира като грешка, тъй като вярвам, че е предвидено поведение за браузърите да правят всичко възможно, за да покажат фокусирани елементи, дори ако това означава превъртане на overflow:hidden елемент. От друга страна, не съм сигурен, че iframe всъщност получава фокус, може да е различен проблем, който просто има известно припокриване.

Едно нещо, което бих опитал, е да накарам манипулатора на изскачащо състояние да премести „iPhone“ в центъра на прозореца и да промени URL адреса му само след като приключи с анимирането. Ако това не работи, може би можете да погледнете примерната страница, на която се позовавам в докладите си за грешки. Може да ви даде допълнителна представа за природата на автоматичното превъртане.

person Chad von Nau    schedule 26.03.2015