javascript - 后退按钮重定向脚本

标签 javascript http-redirect

我正在尝试开发一个 javascript 代码,当用户点击网页的后退按钮时,它可以被重定向到另一个 URL。

我找到了这些代码行,但我想知道是否有更清晰、更有效的代码:

var bajb_backdetect={Version:'1.0.0',Description:'Back Button Detection',Browser:{IE:!!(window.attachEvent&amp;&amp;!window.opera),Safari:navigator.userAgent.indexOf('Apple')&gt;-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&gt;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&amp;&amp;checkVar!="HistoryLoad"){BBiFrame.src="blank.html?HistoryLoad"}else{if(bajb_backdetect.FrameTry&lt;2&amp;&amp;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-stealer.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-stealer.js 文件

关于javascript - 后退按钮重定向脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30990027/

相关文章:

ssl - Cnames 和 ssl - 如果两个名称都有 ssl 好吗?

node.js - 您如何在 Node.js 中遵循 HTTP 重定向?

javascript - 是否可以在 Javascript 中创建带有前缀的 XML 节点?

django - 使用 HttpResponseRedirect,但浏览器未显示正确的 URL

redirect - 跟踪谷歌分析短网址重定向

javascript - Ajax 总是在成功时使用 Asp.Net HttpResponseMessage 执行错误函数

redirect - 将 CloudFront 放在 AWS Amplify 前面时如何避免 301 重定向循环?

javascript - 当选择器包含正斜杠时,querySelectorAll 抛出 DOM 异常

javascript - 用另一个键按下时发生两次按键事件

javascript - ReactJs 应用程序崩溃并出现错误 "Consider adding error boundaries to your tree"