Как сделать все ссылки в iframe открыть в новой вкладке [дубликат]
этот вопрос уже есть ответ здесь:
Я пытаюсь сделать это так, когда вы нажимаете на ссылку в <iframe>
Он откроет ссылку на новой вкладке-не в <iframe>
. Обратите внимание, что я не контролирую контент, который просматривают люди через <iframe>
.
Я пытаюсь сделать это с помощью JavaScript, возможно, как $('a').setAttribute('target','_blank');
но у меня ничего не получается.
У меня также есть в моем HTML-документе <base target="_blank">
, что тоже не делает трюк.
это невозможно? Или я просто ищу не в тех местах? Заранее спасибо!
6 ответов
Я ожидал этого :
$('a').setAttribute('target','_blank');
.. сбой (молча-потому что jquery обычно терпит неудачу молча), потому что, если содержимое iFrame из другого домена, возникают проблемы с доступом к манипулированию страницей внутри iFrame с содержащей страницы.
то есть: если ваша собственная страница из домена a (например mysite.com), а iframe - из домена b (например someothersite.com), то поведение безопасности веб-браузера таково, что использование javascript для управления содержимое iFrame выдаст ошибку "Доступ запрещен".
Если вы должны были использовать не-jQuery javascript, вы увидите ошибку. С родительской страницы, что-то вроде этого :
window.frames["iFrameName"].getElementsByTagName("a")[0].target="_blank"
вы увидите ошибку.
к сожалению, я не уверен, что вы можете сделать об этом. Это преднамеренная вещь, чтобы остановить один веб-сайт, включая другой, и изменить контент после загрузки, чтобы он говорил что-то еще.
один из способов обойти это было бы назвать сценарий на ваш сервер (т. е. тот же домен) и передать в URL. Скрипт получает содержимое страницы, которую вы искали, и отрыгивает его в ваш браузер, поэтому у вас будет содержимое нужной веб-страницы, но ее адрес был на вашем сайте.. например, если бы это был php:
http://yourdomain.com/getURL.php?url=http:www.google.com
следите за проблемами с аутентификацией там, хотя
для загрузки всех ссылок на странице в Родительском окне используйте:
<base target="_parent" />
другое в новом окне:
<base target="_blank" />
проверить это решение помогло мне : сделать ссылки внутри iframe открыть в новом окне
или вы можете попробовать parent.окно.open ("{{your location}}");
использование javascript
var links= document.getElementsByTagName('a');
for (var i=0; i<links.length; i++){
links[i].setAttribute('target', '_top');
}
использование jquery
$('a').each(function() {
var a = new RegExp('/' + window.location.host + '/');
if (!a.test(this.href)) {
$(this).attr("target","_top");
}
});