Я знаю политику одного и того же происхождения ... просто избавляюсь от этого.Trigger click on iframe
Во всяком случае, у меня есть слайд-шоу (slide.js), в котором есть встроенные видео. Когда пользователь нажимает на видео, я хочу, чтобы слайд-шоу приостанавливалось. События изнутри iframe не запускаются, поэтому я пытаюсь обойти это. Сейчас у меня есть частичное решение. Я обнаружить blur
событие на window
и если вновь сосредоточены элемент является iframe
затем приостановить слайд-шоу:
$(window).blur(function(event){
console.log(event.target);
if($('iframe').is(':focus')){
//clicked inside iframe
console.log('test');
}
console.log('document.activeElement is:');
console.log(document.activeElement);
console.log('\n');
});
После загрузки страницы я получаю это в консоли:
document.activeElement is:
BODY
Теперь часть что меня смущает. Событие click только запускает событие фокуса , когда я нажимаю где-то, кроме iframe
, сначала. То есть, после загрузки страницы, если я непосредственно нажимаю на iframe, консоль не выполняет проверку журнала. Если я нажимаю либо вне рамки, либо на другой вкладке в браузере, или где-либо еще, событие blur
будет срабатывать. После этого, если я нажимаю IFRAME, то я получаю тест в консоли:
После загрузки страницы, я нажимаю на другую вкладку затем вернуться к исходной позиции:
Window {top: Window, window: Window, location: Location, external: Object, chrome: Object…}
document.activeElement is:
<body class="full">...</body>
Затем я нажимаю IFRAME:
Window {top: Window, window: Window, location: Location, external: Object, chrome: Object…}
test
document.activeElement is:
<iframe>...</iframe>
Почему ???
Я даже поставить это прежде всего, и это не помогло:
$(window).focus();
Однако, это работает, если я это сделать:
$('input').focus();
Если вход ориентирован, то я могу щелкните iframe и вызовите событие, не нажимая на что-либо еще заранее.
Помоги мне, ты моя единственная надежда ...
Спасибо за ваш ответ. На самом деле есть вход уже на странице, и я пробовал это раньше, и он работает, когда я фокусирую это в первую очередь. Его возможные другие формы с автофокусом могут конфликтовать с этим, так что это последнее решение. – smilebomb
@jefffabiny - отредактировал мой ответ, это работает для вас? – adeneo
Да, да. Я мог бы поклясться, что пробовал этот уже ... достаточно интересно, $ (window) .focus() не работает. Я отвечу на ваш ответ мгновенно. Сначала я хотел бы, чтобы кто-то попытался объяснить, почему так случилось. – smilebomb