已阻止整个文档的Backspace键的默认页面导航行为。但是,当焦点位于iframe区域时,按退格键仍会导致页面导航到上一个网页。
这是一个简单的例子。第一个网页page1.html包含指向第二个网页page2.html的链接,该网页包含iframe。要重现此问题,请在Web浏览器中打开page1.html,然后单击第1页中的链接以导航到page2.html。如果鼠标聚焦在第2页中iframe区域以外的任何位置,则在按Backspace键后它将保持在同一页面(page2.html);如果鼠标聚焦在iframe区域,它将导航到上一页(page1.html)。
page1.html
<html>
<body>
This is page 1. <br/>
<a href="page2.html"> Click to page 2 with iframe. </a><br/>
</body>
</html>
page2.html
<html>
<script type="text/javascript">
document.onkeydown = function(event) {
if (event.keyCode === 8) {
event.preventDefault();
}
};
</script>
<body>
This is page 2 with iframe.<br/>
<iframe width="200" height="50" name="box" id="box" sandbox="allow-same-origin"></iframe><br/>
</body>
</html>
在iframe区域中按下Backspace键时,不会触发document.onkeydown中的代码。当焦点在其他任何地方时,它工作正常。
我发现iframe的沙箱中是否允许使用脚本,将 page2.html 更改为以下内容会阻止焦点位于iframe区域时的页面导航。但是由于安全问题,我们的项目不允许这个iframe的脚本。
<html>
<script type="text/javascript">
document.onkeydown = function(event) {
if (event.keyCode === 8) {
event.preventDefault();
}
};
</script>
<body>
This is page 2 with iframe.<br/>
<iframe width="200" height="50" name="box" id="box" sandbox="allow-same-origin allow-scripts"></iframe><br/>
<script type="text/javascript">
window.frames[0].onkeydown = function(event) {
if (event.keyCode === 8) {
event.preventDefault();
}
};
</script>
</body>
</html>
如果没有iframe脚本,是否有解决此问题的方法?
提前致谢。