2016-08-05 7 views
0

Можно ли проверить, щелкнул ли пользователь элемент внутри всплывающих окон? В настоящее время я использую этот JavaScript, чтобы открыть всплывающее окно и определить, закрыто ли оно.Обнаруживать, если пользователь нажал элемент внутри всплывающего окна

var win = window.open(url,'','height=500,width=800'); 
var winTimer = window.setInterval(function() 
{ 
    if (win.closed == true) { 
     clearInterval(winTimer); 
    } 
}, 2000); 

Например, я открываю YouTube во всплывающем окне, и я хочу, чтобы обнаружить, если пользователь нажал на кнопку «как». Как я могу обнаружить щелчок элемента внутри моего интервала и закрыть всплывающее окно после его обнаружения?

+2

Возможный дубликат [Возможно ли обнаружить событие щелчка пользователя во всплывающем окне?] (Http://stackoverflow.com/questions/21018298/is-it-possible-to-detect-the-user -click-event-in-the-popup-window) –

ответ

1

К сожалению, если домен не размещен в том же домене, что и ваш сайт, вы столкнетесь с проблемами cross-domain security. То, что вы пытаетесь выполнить (через youtube), не будет работать в этом случае, если у них не было неявного api, что позволяет это (см. Window.postMessage()).

От wikipedia page for the Same-origin_policy:

Основной причиной этого ограничения, потому что без политики одного источника было бы представлять угрозу безопасности. Предположим, что пользователь посещает банковский веб-сайт и не выходит из системы. Затем он переходит на любой случайный другой сайт, и на этом сайте есть вредоносный код JavaScript, работающий в фоновом режиме, который запрашивает данные с банковского сайта. Поскольку пользователь все еще зарегистрирован на банковском сайте, этот вредоносный код может делать что-либо на банковском сайте. Например, получите список ваших последних транзакций, создайте новую транзакцию и т. Д. Это связано с тем, что браузер может отправлять и получать файлы cookie сеанса на банковский веб-сайт на основе домена банковского веб-сайта. Пользователь, посещающий этот вредоносный сайт, ожидает, что посещаемый им сайт не имеет доступа к куки-файлу банковской сессии. Хотя это верно, JavaScript не имеет прямого доступа к куки-файлу банковского сеанса, но он все равно может отправлять и получать запросы на банковский сайт с помощью cookie сеанса банковского сайта, действуя в качестве обычного пользователя банковского сайта. Что касается отправки новых транзакций, то даже CSRF-защиты на банковском сайте не действуют, потому что сценарий может просто делать то же самое, что и пользователь. Так что это проблема для всех сайтов, на которых вы используете сеансы и/или должны быть зарегистрированы. Если банковский сайт из примера (или любого другого сайта, конечно) представляет только публичные данные, и вы ничего не можете инициировать, тогда обычно нет опасности, которой защищает политика одного и того же происхождения. Кроме того, если два сайта находятся под контролем одной стороны или полностью доверяют друг другу, то, вероятно, также нет никакой опасности.

+0

Спасибо за информацию! ну, я думаю, я мог бы использовать iframe instesasd popup correct? –

+0

iframe используют ту же самую политику происхождения. Вы можете посмотреть [здесь] (http://stackoverflow.com/questions/13439303/detect-click-event-inside-iframe), но, как вы можете видеть по второму комментарию, вы столкнетесь с этим выпуск с iframe также – FrankerZ

 Смежные вопросы

  • Нет связанных вопросов^_^