Предотвратить кражу фрейма - PullRequest
13 голосов
/ 26 августа 2011

У меня есть сайт, который встраивает iframe. Когда я тестировал iframe, я использовал google.com и заметил, что поле ввода поиска сфокусировано. Очевидно, что я не буду использовать google.com для производства, но хотел бы предотвратить кражу фрейма.

Есть ли способ предотвратить кражу фокуса в iframe?

Ответы [ 4 ]

6 голосов
/ 15 августа 2012

Если у вас есть доступ к сценариям на стороне сервера, вы можете использовать его для загрузки оперативной копии страницы, которую вы хотите встроить, поиска и удаления любого кода кражи фокуса, а затем отобразить эту измененную страницу в своем фрейме.Или, если вы обнаружите, что нет кода для кражи фокуса, вы можете просто связать свой iframe с удаленной страницей, как обычно.

Другой вариант может заключаться в том, чтобы изначально скрыть iframe с помощью CSS style="display:none" и позволить пользователю отображать его.это с JavaScript Object.style.display="inline"

1 голос
/ 26 августа 2011

Не совсем. Вы можете вернуть фокус на окно, если фокус сместится ( ВНИМАНИЕ: я не рекомендую использовать этот код ):

<body onblur="window.focus();">

У этого есть некоторые не очень приятные побочные эффекты, такие как неспособность сфокусировать адресную строку в Firefox или попадание в бесконечные циклы, если кадр также пытается бороться за фокус. Поэтому, если вы хотите сделать это (это большое «если», я не рекомендую его), вы должны, по крайней мере, ограничить его фазой загрузки страницы и разрешить изменение фокуса после этого.

0 голосов
/ 09 декабря 2018

Я нашел решение здесь:

Отключить прокрутку тела / содержимого с помощью jQuery - disableScroll

Отключение прокрутки не позволило фрейму iframe украсть фокус.

Я использовал это в своем скрипте jquery:

if( $('iframe').length != 0 ) $(window).disablescroll();

window.addEventListener('touchstart', function onFirstTouch() 
{
window.removeEventListener('touchstart', onFirstTouch, false);
AllowScrolling()
}, false);

$(window).on("scroll",function(){ $(window).off("scroll"); AllowScrolling() });

setTimeout('AllowScrolling()',5000); //Fallback
function AllowScrolling(){$(window).disablescroll('undo')}

Поэтому, если пользователь касается экрана или щелкает полосу прокрутки, прокрутка разрешена.Кажется, у меня все в порядке.

0 голосов
/ 18 октября 2018

Используйте функцию setTimeout, чтобы перефокусироваться на элементе по вашему выбору, например, window.onload = function(){ setTimeout( function() { element.focus() }, 500 ) };

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...