Как сделать все ссылки в 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}}");


использовать $('a').attr('target','_blank'); вместо setAttribute...

скрипка


заменить target='blank' с onclick='window.open();'


использование 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");
   }
});