后退按钮重定向脚本
Back button redirect script
我正在尝试开发一个javascript代码,当用户单击网页的后退按钮时,它可以重定向到另一个URL。
我已经找到了这些代码行,但我想知道是否有更干净、更有效的东西:
var bajb_backdetect={Version:'1.0.0',Description:'Back Button Detection',Browser:{IE:!!(window.attachEvent&&!window.opera),Safari:navigator.userAgent.indexOf('Apple')>-1,Opera:!!window.opera},FrameLoaded:0,FrameTry:0,FrameTimeout:null,OnBack:function(){alert('Back Button Clicked')},BAJBFrame:function(){var BAJBOnBack=document.getElementById('BAJBOnBack');if(bajb_backdetect.FrameLoaded>1){if(bajb_backdetect.FrameLoaded==2){bajb_backdetect.OnBack();}}bajb_backdetect.FrameLoaded++;if(bajb_backdetect.FrameLoaded==1){if(bajb_backdetect.Browser.IE){bajb_backdetect.SetupFrames()}else{bajb_backdetect.FrameTimeout=setTimeout("bajb_backdetect.SetupFrames();",700)}}},SetupFrames:function(){clearTimeout(bajb_backdetect.FrameTimeout);var BBiFrame=document.getElementById('BAJBOnBack');var checkVar=BBiFrame.src.substr(-11,11);if(bajb_backdetect.FrameLoaded==1&&checkVar!="HistoryLoad"){BBiFrame.src="blank.html?HistoryLoad"}else{if(bajb_backdetect.FrameTry<2&&checkVar!="HistoryLoad"){bajb_backdetect.FrameTry++;bajb_backdetect.FrameTimeout=setTimeout("bajb_backdetect.SetupFrames();",700)}}},SafariHash:'false',Safari:function(){if(bajb_backdetect.SafariHash=='false'){if(window.location.hash=='#b'){bajb_backdetect.SafariHash='true'}else{window.location.hash='#b'}setTimeout("bajb_backdetect.Safari();",100)}else if(bajb_backdetect.SafariHash=='true'){if(window.location.hash==''){bajb_backdetect.SafariHash='back';bajb_backdetect.OnBack();}else{setTimeout("bajb_backdetect.Safari();",100)}}},Initialise:function(){if(bajb_backdetect.Browser.Safari){setTimeout("bajb_backdetect.Safari();",600)}else{document.write('<iframe id="BAJBOnBack" width="320" height="240" style="display: none;" src="blank.html" onunload="alert(''de'')" onload="bajb_backdetect.BAJBFrame();"></iframe>')}}};bajb_backdetect.Initialise();
这就是你在HTML文档中使用它的方式:
<script type="text/javascript" src="js/backfix.min.js"></script>
<script type="text/javascript">// <![CDATA[
bajb_backdetect.OnBack = function(){
document.location.href = 'http://google.com'; //Change the url here with your desired URL
}
// ]]></script>
我已经找到了答案,以防其他人正在寻找。
使用以下代码创建一个名为history-sealer.js的单独文件:
(function(window, location) {
history.replaceState(null, document.title, location.pathname+"#!/history");
history.pushState(null, document.title, location.pathname);
window.addEventListener("popstate", function() {
if(location.hash === "#!/history") {
history.replaceState(null, document.title, location.pathname);
setTimeout(function(){
location.replace("http://www.url.com");
},10);
}
}, false);
}(window, location));
然后将此代码包含在HTML文件中:
<script src="history-stealer.js"></script>
以便它调用history-sealer.js文件
如果你想使用浏览器返回按钮,我会将每个页面更改推到History Api 中
https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_historyhttp://www.sitepoint.com/javascript-history-pushstate/
你需要做的是,当用户浏览你的页面时,每当他们做了你认为应该放入他们历史记录的事情时,你都会使用
history.pushState({}, 'Title: Google', 'http://www.google.com/');
现在,当用户点击后退按钮时,上一个页面将是google.com,尽管我相信你希望它成为你网页上的某个终点。
相关文章:
- 我尝试在登录脚本中使用ajax,但页面不会重定向
- php中的脚本重定向是递归的
- 在php中不运行java脚本的情况下重定向页面
- 从Ajax脚本重定向Javascript页面
- 在重定向到 ASP.NET C# 中的另一个页面之前显示客户端脚本警报
- 登录后PHP登录脚本重定向不起作用
- Chrome扩展-重定向当前选项卡后重新运行扩展脚本
- 在内容脚本中停止页面加载和重定向
- 在所有浏览器上执行没有扩展名.js外部脚本重定向
- 从内容脚本重定向到chrome扩展名网址
- 无Javascript检测脚本+重定向
- 如果#wrapper隐藏,则需要此脚本重定向页面的条件
- 使用脚本重定向页面后,请留在特定位置
- 如何从struts 2中的java脚本重定向到struts操作
- 带有标头的Java脚本重定向
- 有什么方法可以绑定'任何'通过身份验证脚本重定向(链接/刷新等)
- 如何使PHP脚本重定向,并显示一个弹出框同时当某事是真的/成功
- Java 脚本重定向在 smarty .tpl 文件中不起作用
- 单击“Java 脚本”重定向到另一个页面
- PHP头文件("location: test.php")不工作.但是java脚本重定向工作