Запустите событие JavaScript с пользовательским параметром и перехватите его с помощью jQuery

В настоящее время я запускаю пользовательское событие JavaScript, подобное этому, с самой страницы в документ iframe:

// 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?

1 ответ

Решение

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

e.originalEvent.custom

следует оценить в соответствии с вашим значением, в этом случае 'example param',

Другие вопросы по тегам