Как запретить навигацию по страницам при нажатии клавиши Backspace в области iframe без скриптов allow
Поведение страницы по умолчанию для клавиши Backspace было запрещено для всего документа. Однако, когда фокус находится в области iframe, нажатие клавиши Backspace по-прежнему вызывает переход на предыдущую веб-страницу.
Вот простой пример. Первая веб-страница page1.html содержит ссылку на вторую веб-страницу page2.html, в которой есть фрейм. Чтобы воспроизвести проблему, откройте страницу page1.html в веб-браузере, а затем щелкните ссылку на странице page1, чтобы перейти к странице page2.html. Если мышь сфокусирована в любом месте, кроме области iframe на странице 2, она останется на той же странице (page2.html) после нажатия клавиши Backspace; если мышь сфокусирована на области 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>
Код в document.onkeydown не запускается при нажатии клавиши Backspace в области iframe. Он отлично работает, когда фокус находится где-либо еще.
Я обнаружил, что если в песочнице 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?
Заранее спасибо.