你尝试过简单地更改目标属性吗?
$('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执行此操作。
iframe
位于不同的域名下,您将无法访问任何iframe
元素。因此,在这种情况下,您的脚本将失败。 - Zain Shaikh