2013-09-09 6 views
2

В настоящее время я запуская пользовательское JavaScript событие, как, что из самой страницы в IFrame документ:Пожар JavaScript события с пользовательским параметром и поймать его с JQuery

// Create iframe 
var iframe = document.createElement('iframe'); 
iframe.setAttribute('src', 'URL to load'); 
document.body.appendChild(iframe); 

// Event itself 
var event = document.createEvent('HTMLEvents'); 
event.custom = 'example param'; 
event.initEvent('custom', false, true); 
iframe.contentWindow.window.document.dispatchEvent(event); 

Теперь на этой странице IFrame У меня есть JQuery доступны , Как я могу поймать событие (которое работает), а также (важно) получить пользовательский (объект) параметр?

Ловля это так:

$(document).on('custom', function(e, param) { 
    alert(e); // [object Object] -> normal jQuery event data without any special data 
    alert(e.custom); // undefined 
    alert(param); // undefined 
}); 

Как я мог получить данные пользовательских параметров без добавления JQuery на саму страницу, которая содержит IFRAME?

+0

'Document.createEvent ('')' устарел - возможно, было бы лучше использовать 'new Event ('')' или 'new CustomEvent ('', {})' - см. [MDN: Создание и запуск событий] (https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Events/Creating_and_triggering_events?redirectlocale=en-US&redirectslug=Web%2FGuide%2FDOM%2FEvents%2FCreating_and_triggering_events) – logic8

ответ

1

jQuery обертывает исходное событие DOM. Исходное событие должно быть доступно через свойство originalEvent события jQuery.

e.originalEvent.custom 

следует оценить к пользовательскому значению, в данном случае 'example param'.

+0

редактирование должно быть не менее 6 символов. По-видимому, 1 буква и 5 пробелов не учитываются. – logic8

+0

Он делает, когда вы являетесь владельцем;) Спасибо за подсказку. – MasterAM