Вы пытались просто изменить целевой атрибут?
$('iframe a[target="_blank"]').each(function () {
$(this).attr('target', '_self');
});
Также, Zain Shaikh совершенно правильно. Если источник iframe
загружен из другого домена, вы не сможете сделать это из JavaScript.
Вы все еще можете делать это на стороне сервера, но это будет зависеть от того, какой язык вы используете.
Что касается нативного решения JavaScript:
function replaceWithSelf () {
var iframes = document.getElementsByTagName('iframe');
var i = 0;
var j = 0;
var anchors;
for (i = 0; i < iframes.length; i += 1) {
anchors = iframes[i].getElementsByTagName('a');
for (j = 0; j < anchors.length; j += 1) {
if (anchors[j].getAttribute('target') === '_blank') {
anchors[j].setAttribute('target', '_self');
}
}
}
}
Я проверил соответствующую часть на http://www.htmlcodetutorial.com/linking/_A_TARGET_95y98y108y97y110y107y.html (как описано в вашем вопросе). Используемый тестовый код:
var anchors = document.getElementsByTagName('a');
for (var j = 0; j < anchors.length; j += 1) {
if (anchors[j].getAttribute('target') === '_blank') {
anchors[j].setAttribute('target', '_self');
}
}
который я запускал в консоли (Google Chrome). Код работал как задумано.
Чтобы повторить, если источник iframe загружен из другого домена, вы не сможете сделать это из JavaScript.
Другими словами, если домен, на котором выполняется ВАШ код, также не является http://www.htmlcodetutorial.com,, вы НЕ сможете сделать это в JavaScript.