Загружать HTML-фреймы в определенном порядке без проблем с кнопкой «Назад»? - PullRequest
0 голосов
/ 14 ноября 2008

У меня есть веб-страница, использующая набор фреймов.

Из-за сценариев и объектных зависимостей мне нужно загружать кадры в определенном порядке.

Я использовал этот пример в качестве шаблона: Источник JavaScript: Навигация: Порядок загрузки фреймов

Это загружает пустую страницу вместо страницы, которую мне нужно загрузить последней, а затем заменяет ее на правильную страницу после загрузки первой страницы.

Однако: мне также нужно использовать кнопку «Назад» браузера. Если вы запустите образец по приведенной выше ссылке, дайте загрузиться обоим фреймам, затем нажмите кнопку «Назад», верхний фрейм вернется к временной пустой странице. Затем необходимо снова нажать кнопку «Назад», чтобы перейти на страницу до набора фреймов.

Есть ли способ заставить фреймы загружаться в определенном порядке без такого поведения кнопки «Назад» или способ заставить кнопку «Назад» пропустить пустую страницу?

Это необходимо для работы с Internet Explorer 6 и 7, а также предпочтительно с Firefox 3.

Ответы [ 3 ]

1 голос
/ 22 апреля 2010

Вы часто упоминаете об этом в этом посте ...

Это устаревшая система. Требуется набор фреймов.

Если вы работаете на устаревшей системе, то, я думаю, настало время принять то, как наборы фреймов ведут себя с точки зрения кнопки возврата браузера. Если это действительно устаревшая система, вам не нужно исправлять это поведение. Если это на самом деле НЕ унаследованная система, и вам нужно решить эту проблему, вам следует отказаться от использования набора фреймов. Наборы фреймов устарели из стандартов HTML и не должны использоваться.

0 голосов
/ 16 ноября 2008

Почему бы не использовать три фрейма в нужном порядке, а затем изменить их размер / переместить в соответствующие места?

<iframe id="a1" src="page-to-load-first.htm"></iframe>
<iframe id="a2" src="page-to-load-second.htm"></iframe>
<iframe id="a3" src="page-to-load-third.htm"></iframe>
<script>
function pos(elem,x,y,w,h) {
   if (!elem.style) elem=document.getElementById(elem);
   elem.style.position='absolute';
   elem.style.top = y+'px';
   elem.style.left= x+'px';
   elem.style.width=w+'px';
   elem.style.height=h+'px';
}
window.onload = function() {
    window.onresize=function() {
        var w = window.innerWidth || document.documentElement.clientWidth;
        var h = window.innerHeight || document.documentElement.clientHeight;
        var w3 = w/3;
        var h2 = h/2;
        pos('a1',0,0,w3,h); /* left 1/3rd */
        pos('a2',w3,0,w3+w3,h2);
        pos('a3',w3,h2,w3+w3,h2);
    };
    window.onresize();
};
</script>
0 голосов
/ 15 ноября 2008

Создайте сами фреймы, используя JavaScript:

<html>
<head>
<script>
function makeFrame(frameName) {
    var newFrame = document.createElement('frame');
    newFrame.id=frameName;
    if(frameName=="B") {
        newFrame.onload=function() {makeFrame("C")};
        newFrame.src = 'http://www.google.com';
    }
    else {
        newFrame.src = 'http://www.yahoo.com';
    }
    document.getElementById('A').appendChild(newFrame);

}
</script>
</head>
<frameset name='A' id='A' rows="80, *" onload="makeFrame('B')"></frameset>
</html>
...