Внутри iframe у меня есть следующий скрипт:
$("a").on("click", function (e) {
e.preventDefault();
if (e.target.href) {
let link = e.target.href;
$.ajax({
url: "/newOrigin",
data: {
"link": link
},
type: "POST",
success: function (response) {
parent.document.getElementById("oframe").srcdoc = response.site;
parent.document.getElementById("oLink").href = link;
},
error: function (error) {
console.log(error);
}
});
}
});
Что не работает. Предотвращение по умолчанию не выполняет свою работу, то есть само событие не запускается. Я полагаю, что проблема связана со второй строкой в функции успеха ajax, так как приведенный ниже код работает отлично (изменения в srcdoc и консоль зарегистрирована).
$("a").on("click", function (e) {
e.preventDefault();
if (e.target.href) {
let link = e.target.href;
$.ajax({
url: "/newOrigin",
data: {
"link": link
},
type: "POST",
success: function (response) {
parent.document.getElementById("oframe").srcdoc = response.site;
console.log("Hello");
},
error: function (error) {
console.log(error);
}
});
}
});
oLink - это идентификатор элемента тега (гиперссылка), а oframe - это идентификатор другого iframe внутри родительского элемента iframe, где находится этот код.
Кто-нибудь знает, почему это происходит?
РЕДАКТИРОВАТЬ: на сайте есть два iframe, и каждый из них имеет заголовок над ними (каждый заголовок имеет ссылку на страницу, отображаемую в каждом iframe). При щелчке по ссылке в первом iframe отправляется ajax-запрос со ссылкой, и в ответе содержится HTML-код этой страницы, который отправляется для отображения во втором iframe (первая строка в функции успеха). Теперь я хочу изменить ссылку на слова над 2-м iframe, чтобы она была ссылкой на ссылку, нажатую в 1-м iframe. Таким образом, два заголовка и два элемента iframe находятся внутри одного и того же родительского компонента (одного уровня), а сценарий находится внутри первого элемента iframe.
Здесь используется html: base.html + index.html (iframes и заголовки в index.html): https://github.com/MohamedMoustafaNUIG/AnnotatorVM/tree/master/app/templates
EDIT2: очевидно, функция успеха изолирована от остальной части кода, что означает, что она не имеет доступа к переменной "link". Я решил это, вернув ссылку в ответе и получив от нее доступ. Но событие все еще не запускается: (