如何在不破坏浏览器后退按钮的情况下突破帧?

时间:2011-07-11 22:00:53

标签: javascript

链接到我的网站会将我的网站保留在一个框架中,因此我在页面中添加了以下JavaScript:

if (window.top.location != window.location) {
    window.top.location = window.location
}

现在,如果我通过违规网站访问我的网站,我的网站就会成功突破。但后退按钮打破了!后退按钮将用户发送到我网站的框架版本,该版本会立即再次爆发,让他回到他试图离开的地方!有没有一种简单的方法来解决这个问题?

3 个答案:

答案 0 :(得分:10)

window.top.location.replace(window.location);

替换方法专门用于此目的。它使用新目标替换历史状态中的当前项目,以便后退按钮不会通过您不想要的目标。

答案 1 :(得分:2)

jfriend00的回答确实是对的。使用window.location.replace方法可以在不影响后退按钮的情况下工作。

但是,我只想指出,每当你想阻止一个页面被框架时,你应该做的不仅仅是那个!有几种方法可以防止像这样的简单脚本突破框架,这在许多现代浏览器中都有效。也许您可以禁用页面,显示带有指向整页的链接的消息,类似于此。您还可以使用X-Frame-Options响应标头,告诉浏览器不要在框架中显示页面。如果您不采取某些措施,您的网站可能会被点击劫持。

答案 2 :(得分:1)

另一种解决方案是在新窗口中打开您的网站,在iframed网站上留下友好留言:

if (parent.frames.length) 
{ window.open("mySite.htm", "MySite");
  location.href= "framedMessage.htm";   
}

framedMessage.htm包含一些友好/警告信息。