2012-02-13 7 views
0

Можно ли отображать одну и ту же страницу даже после нажатия кнопки браузера назад?Как отобразить текущую страницу даже после нажатия кнопки браузера назад

Его как многоступенчатая форма, которая на отправке делает перенаправление на результирующую страницу, и как только форма была отправлена, я не хочу, чтобы пользователь мог вернуться к любой из предыдущих страниц с помощью браузеров назад кнопка. Поэтому я хотел бы показывать одну и ту же результирующую страницу пользователю при нажатии кнопки «Назад». Просто URL-адрес при нажатии кнопки «Назад» может измениться на предыдущие URL-адреса из истории, но я бы не хотел, чтобы пользователь возвращался на любую из предыдущих страниц.

Может кто-нибудь предложить мне какие-либо идеи о том, как достичь этого, если это возможно.

РЕДАКТИРОВАТЬ: Скажем, есть 3 шага некоторого процесса и затем полученная страница, как ../step1, ../step2, ../step3, ../resulting page. Пользователь мог играть с этими шагами с помощью кнопки «Назад» и «Вперед», но как только шаг 3 был отправлен, а пользователь находится в ../resulting page. Я хотел бы, чтобы пользователь показывал URL-адрес предыдущей отображаемой страницы, сохраняя при этом страницу результатов.

+0

Я ненавижу звук снисходительно, но простой [поиск Google] (http://www.google.com.au/webhp?hl=en&btnG=Google + Поиск # sclient = пси-аб & гл = еп & безопасно = выкл и сайт = webhp и источник = л и д = HTML + отключить + обратно + кнопку и АТС = 1 & OQ = HTML + отключить + обратно + кнопка & водн = F & АКИ = g1g-v3 & акль = & gs_sm = 3 & gs_upl = 1209l4373l0l4573l24l17l0l5l5l2l365l5119l2-9.8l20l0 & BAV = on.2, or.r_gc.r_pw., cf.osb & fp = 6d89908411f0d802 & biw = 1880 & bih = 927) возвращает множество ответов. Вы пробовали какие-либо из этих результатов? –

+0

@ChristianVarga: результаты «keep-click-back-and-see-the-same-page»? Нет, я не нахожу ничего похожего на это. – skip

+0

Вы думаете об этом не в том направлении. Вы даже нажали на результаты поиска, с которыми я связал вас? Эти решения решают вашу точную проблему, но не так, как вы думаете об этом :) –

ответ

0

вы не можете изменить кнопку назад браузера, потому что он построен в.

+0

Я думал, если бы его функциональность, заданная в вопросе, могла быть достигнута каким-то образом. Я не хочу менять встроенную функциональность кнопки возврата браузеров. – skip

3

Всякий раз, когда вы поймаете себя на мысли: «Я не хочу, чтобы пользователь ...», вы должны остановить себя прямо там. Пользователь отвечает. Они должны быть способны делать все, что хотят. Пытаться помешать им что-то сделать, сродни тому, чтобы говорить им, что делать.

Вместо этого вам просто нужно реагировать соответствующим образом, когда они что-то делают. В этом случае, если они используют кнопку «Назад», вы должны сделать что-то подходящее. Во-первых, вы должны разработать свое приложение, чтобы, если они повторно запрашивают страницу после завершения этого шага, она делает что-то вроде перенаправления их где-то в другом месте.

Во-вторых, вам нужно выдать кеш, чтобы при возврате страницы истек срок действия страницы и не будет отображаться повторно, не обновляя страницу.

Таким образом, если страница была заполнена и предыдущий шаг повторно запрошен, вы просто перенаправляете их обратно на соответствующую страницу. Вы делаете это обычно, устанавливая какой-то уникальный ключ на странице, чтобы вы могли сказать, что запрошенная ранее страница повторно запрашивается.

5

Да, вы можете использовать следующий код яваскрипта

function backButtonOverride() 
{ 
    setTimeout("backButtonOverrideBody()", 1); 
} 

function backButtonOverrideBody() 
{ 
    // Works if we backed up to get here 
    try 
    { 
     window.history.forward(1); 
    } 
    catch (e) 
    { 
     // OK to ignore 
    } 
    // Every quarter-second, try again. The only 
    // guaranteed method for Opera, Firefox, 
    // and Safari, which don't always call 
    // onLoad but *do* resume any timers when 
    // returning to a page 
    setTimeout("backButtonOverrideBody()", 1000); 
} 

if (window.addEventListener) // W3C standard 
{ 
    window.addEventListener('load', backButtonOverride, false); // NB **not** 'onload' 
} 
else if (window.attachEvent) // Microsoft 
{ 
    window.attachEvent('onload', backButtonOverride); 
} 
Смежные вопросы