Моя демонстрация: https://enfrte.neocities.org/code-examples/iframe.html
Привет, у меня есть локальная страница, которая содержит iframe с функцией, которая перенаправляет локальную страницу, если происходит щелчок по событию (кнопка «Остановить загрузку»).
На локальной странице у меня есть функция, которая прикреплена к кнопке перенаправления в iframe, но не может предотвратить перенаправление страницы, потому что она вызывается после функции перенаправления в iframe.
Можно ли как-нибудь предотвратить выполнение функции, выполняемой в iframe, с помощью функции, прикрепленной к локальной области, которая запускается кнопкой в iframe. Я не могу редактировать содержимое iframe в моем сценарии, даже если он находится на том же сервере.
Спасибо.
Локальная страница
<body>
<h3>Objective</h3>
<p>Get NeoCities iframe buttons to also call local function alert.</p>
<h3>iframe content in pink</h3>
<iframe id="neocities-iframe" src="https://enfrte.neocities.org/code-examples/button.html"></iframe>
<p>
<button id="local_bt" data-bt="Local Button" type="button">Local Button</button>
</p>
<script>
document.querySelector('#neocities-iframe').onload = function() {
// First get your iframe
var iframe = document.querySelector('#neocities-iframe');
// And then the iframe's contentDocument or contentWindow properties
var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
// Check for errors
if (!iframeDocument) throw "iframe couldn't be found in DOM.";
// And then get some content in the iframe
var iframeContentBt1 = iframeDocument.querySelector('#nc_1');
var iframeContentBtRedirect = iframeDocument.querySelector('#nc_redirect');
iframeContentBt1.addEventListener('click', local);
iframeContentBtRedirect.addEventListener('click', local);
}
document.querySelector('button').addEventListener('click', local);
function local(e) {
alert('Local call: ' + (e.target.value || e.target.innerText));
e.preventDefault();
}
</script>
</body>
Содержание iframe
<button id="nc_1" data-bt="NeoCities One" type="button">NeoCities button 1</button>
<button id="nc_redirect" data-bt="NeoCities Loader" type="button">Stop me loading!</button>
<script>
document.querySelector('#nc_1').addEventListener('click', btFun);
document.querySelector('#nc_redirect').addEventListener('click', redirect);
function btFun(e) {
alert(e.target.value || e.target.innerText);
}
function redirect() {
console.log('redirect called');
//window.location.assign("image.html");
window.top.location.href = "image.html";
}
</script>