时间: 2021-07-31 作者:daque
欣赏器的畏缩按钮使得咱们不妨简单地归来往日考察过的页面,它无疑特殊有效。但有功夫咱们不得不封闭这个功效,以提防用户打乱预订的页面考察步骤。正文引见搜集上可找到的百般禁止使用欣赏器畏缩按钮计划,领会它们各自的优缺陷和实用场所。 一、概括 已经有很多人问起,“还好吗本领‘禁止使用’欣赏器的畏缩按钮?”,大概“还好吗本领提防用户点击畏缩按钮归来往日欣赏过的页面?”我考察了很多网站,参考了那些网站所引见的百般实行本领。即使你常常考察asp编制程序网站,正文所引见的局部实质你大概仍旧见到过。正文的工作是把百般大概的本领都引见给大师,而后找到最佳的本领! 二、遏止缓存 在我找到的很多计划中,个中有一种倡导遏止页面缓存。简直是运用效劳器端剧本,如次所示: <% response.buffer = true response.expiresabsolute = now() - 1 response.expires = 0 response.cachecontrol = "no-cache" %> 这种本领特殊灵验!它强迫欣赏珍视新考察效劳器载入页面,而不是从缓存读取页面。运用这种本领时,编制程序者的重要工作是创造一个对话级的变量,经过这个变量决定用户能否保持不妨察看谁人不符合经过畏缩按钮考察的页面。因为欣赏器不复缓存这个页面,当用户点击畏缩按钮时欣赏器将从新载入该页面,此时步调就不妨查看谁人对话变量,看看能否该当承诺用户翻开这个页面。 比方,假如咱们犹如下表单: <% response.buffer = true response.expiresabsolute = now() - 1 response.expires = 0 response.cachecontrol = "no-cache" if len(session("firsttimetopage")) > 0 then "用户仍旧考察过暂时页面,此刻是再次归来考察。 "废除对话变量,将用户重定向到登录页面。 session("firsttimetopage") = "" response.redirect "/bar.asp" response.end end if "即使步调运转到这边,证明用户不妨察看暂时页面 "以次发端创造表单 %> <form method=post action="somepage.asp"> <input type=submit> </form> 咱们借助对话变量firsttimetopage查看用户能否是第一次考察暂时页面。即使不是第一次(即session("firsttimetopage")包括某个值),那么咱们就废除对话变量的值,而后把用户从新定向到一个发端页面。如许,当表单提交时(此时sompepage.asp被翻开),咱们必需付与firsttimetopage一个值。即,在somepage.asp中咱们须要加左右面包车型的士代码: session("firsttimetopage") = "no" 如许,仍旧翻开somepage.asp的用户即使点击畏缩按钮,欣赏器将从新乞求效劳器载入页面,效劳器查看到session("firsttimetopage")包括了一个值,所以就废除session("firsttimetopage"),并把用户重定向到其余页面。固然,一切这十足都须要用户起用了cookie,要不对话变量将是失效的。 其余,咱们也不妨用存户端代码使欣赏器不复缓存web页面: <html> <head> <meta http-equiv="expires" content="0"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="pragma" content="no-cache"> </head> 即使运用上头的本领强迫欣赏器不复缓存web页面,必需提防以次几点: 惟有在运用安定贯穿时“pragma: no-cache”才提防欣赏器缓存页面。对于不受安定养护的页面,“pragma: no-cache”被视为与“expires: -1”沟通,此时欣赏器保持缓存页面,但把页面标志为登时过时。 在ie 4或第5中学,“cache-control”meta http-equiv标志将被忽视,不起效率。 在本质运用中咱们不妨加上一切那些代码。但是,因为这种本领不许实用于一切的欣赏器,以是是不引荐运用的。但即使是在intranet情况下,处置员不妨遏制用户运用哪种欣赏器,我想仍旧有人会运用这种本领。 三、其余本领 接下来咱们要计划的本领此后退按钮自己为重心,而不是欣赏器缓存。这边有一篇作品rewiring the back button很犯得着参考。然而我提防到,即使运用这种本领,固然用户点击一下畏缩按钮时他不会看到往日输出数据的页面,但只重心击两次就不妨,这可不是咱们蓄意的功效,由于很多功夫,顽强的用户老是不妨找到绕过提防办法的方法。 其余一种禁止使用畏缩按钮的方法是用存户端javascript翻开一个没有东西条的窗口,这使得用户很难归来前一页面,但不是不大概。一种更安定但十分恼人的本领是,当表单提交时翻开一个新的窗口,与此同声封闭表单地方的窗口。但我感触这种本领不犯得着刻意商量,由于咱们总不许让用户每提交一个表单就翻开一个新窗口。 那么,在谁人咱们不想让用户归来的页面能否也不妨介入javascript代码呢?在这个页面中介入的javascript代码可用来爆发点击进步按钮的功效,如许也就对消了用户点击畏缩按钮所爆发的举措。用来实行该功效的javascript代码如次所示: <script language="javascript"> <!-- javascript:window.history.forward(1); //--> </script> 同样地,这种本领固然灵验,但隔绝“最佳的本领”还差得很远。厥后我又看到有人倡导用location.replace从一个页面转到另一个页面。这种本领的道理是,用新页面包车型的士url替代暂时的汗青记录,如许欣赏汗青记载中就惟有一个页面,畏缩按钮长久不会变为可用。我想这大概恰是很多人所探求的本领,但这种本领保持不是任何情景下的最佳本领。运用这种本领的实比方下所示: <a href="pagename.htm" onclick="javascript:location.replace(this.href); event.returnvalue=false; "> 遏止畏缩到本页面包车型的士链接 试试底下这个链接: 遏止畏缩到本页面包车型的士链接! 这种本领的缺陷在乎:大略地应用response.redirect将不复灵验,这是由于历次用户从一个页面转到另一个页面,咱们都必需用存户端代码废除location.history。其余还要提防,这种本领废除的是结果一个考察汗青记载,而不是十足的考察记载。 点击上头的链接,你将翻开一个大略的html页面。再点击畏缩按钮,你不妨看到这时候翻开的不是本页面,而是本页面之前的页面!(固然,你必需在欣赏器中起用了存户端javascript代码。) 过程一番提防的寻探求觅之后,我创造保持没辙找到真实不妨实足禁止使用欣赏器畏缩按钮的方法。一切这边引见的本领都不妨在各别水平上、以各别的办法遏止用户归来前一页面,但它们都有各自的控制。因为不生存不妨实足禁止使用畏缩按钮的本领,以是最佳的计划该当是:搀和应用存户端剧本和效劳器端剧本。