Итак, у меня есть iframe на странице моего приложения (разные домены), где iframe имеет несколько полей и скрытую кнопку, на которой есть событие click для выполнения всех необходимых действий (например, операции CRUD). Сообщение вызывается через ajax, поэтому в iframe нет метода POST. На родительской странице есть кнопка, которую следует использовать при нажатии, чтобы вызвать событие щелчка внутри iframe. Я просмотрел postMessage и перекрестное происхождение и смог найти что-то, что я реализовал в своем решении. С учетом этого, когда я нажимаю кнопку на родительской странице, ничего не происходит. Я не вижу никакой ошибки консоли, но ничего не срабатывает. Это то, что у меня есть в моем коде.
<div id = "main">
<iframe id = "cardIframe" src = "@($"https://localhost:44320/handlers?userId = {Model.UserId}")"
width = "100%" height = "300px" style = "border: none;" scrolling = "no"></iframe>
<hr class = "mb-4" />
@Html.UI().Button("Continue to Checkout", size: UIElementSize.Block, uiClass: UIElementClass.Primary, htmlAttributes: new { @class = "checkoutsubmit" })
<script type = "text/javascript">
$('.checkoutsubmit').click(function (e) {
var iframe = document.getElementById('cardIframe').contentWindow;
window.iframe = iframe;
iframe.postMessage("createvault", "*");
});
</script>И в моем приложении iframe (http://локальный:43402)
<script type = "text/javascript">
window.addEventListener("click", clickEvent, false);
function clickEvent(event) {
$('.processbraintree').trigger('click');
}
$('.processbraintree').click(function(e) {
..Do something
});
</script>Не уверен, что я делаю неправильно здесь. Тот факт, что я не вижу никакой ошибки в консоли, никому не помогает. Мне нужно, чтобы iframe делал публикацию формы, так как в ней есть все материалы пользовательского интерфейса Braintree. Таким образом, родитель должен иметь возможность инициировать событие внутри iframe, которое в настоящее время не происходит.
поэтому в моем iframe мне нужно добавить прослушиватель для почтового сообщения... что-то вроде window.addEventListener("createvault", clickEvent, false);
Документы помогут developer.mozilla.org/en-US/docs/Web/API/Window/postMessage. Посмотрите на примеры
Итак, я обновил прослушиватель в iframe до «сообщения» вместо щелчка. Теперь проблема, с которой я сталкиваюсь, заключается в том, что когда я помещаю курсор в одно из полей iframe, он вызывает событие нажатия кнопки. Я хочу вызвать его, когда нажму кнопку на родительской странице. Похоже, слушатель работает, но не тогда, когда я хочу.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


У вас нет прослушивателя событий для
messagefrompostMessageв коде iframe. Можно также предположить, чтоiframeне определено из-за "такая же политика происхождения"