Сделать ссылки внутри iframe открытыми в новом окне - PullRequest
3 голосов
/ 03 января 2011

Я пытаюсь отобразить карту внутри iframe с иглой, которая при наведении курсора мыши показывает некоторую информацию об определенной компании, когда вы нажимаете на ссылку, страница открывается внутри iframe, что портит впечатление, поэтомумне было интересно, возможно ли сделать ссылки внутри iframe открытыми в новом окне вместо этого, возможно, используя jquery или что-то похожее?

код, который у меня есть atm:

http://www.jsfiddle.net/rkd59/1/

Изменить: по крайней мере захватить клик в пределах iframe, чтобы я мог изменить размер iframe

Ответы [ 6 ]

7 голосов
/ 09 января 2011

Вам потребуется какой-то открытый API, чтобы сделать это правильно, а Eniro не предоставляет его в соответствии с этой страницей (на шведском языке).

Я бы порекомендовал вам использовать Google Maps API v3 .Я сделал пример для jsFiddle , который выглядит примерно так же, как в Eniro.

Я с радостью помогу вам с этим, так что просто спросите!

2 голосов
/ 03 января 2011

Чтобы сделать ссылку всплывающей в новом окне, вы обычно используете target="_blank" как таковое:

<a href="http://www.yahoo.com" target="_blank">Go to Yahoo</a>

Однако это будет работать только в том случае, если вы сможете изменить код, отображаемый в iFrame

1 голос
/ 13 февраля 2014

Пожалуйста, попробуйте следующее:

<script>
x=document.querySelectorAll("a");
for(i=0;i<x.length;i++)
{
   x[i].setAttribute("target","_blank");
}
</script>

Таким образом, все ссылки открываются в новом кадре.

1 голос
/ 08 января 2011

Вы не можете (или это крайне трудно) сделать события внутри iframe влияющими на родительскую страницу. Это необходимо для предотвращения атак со стороны XSS или межсайтовых скриптов . Сказав это, если сайт внутри iframe находится на вашем собственном домене и вы хотите настроить некоторые чрезвычайно сложные идентификаторы сеансов ajaxing и php, возможно вы могли бы заставить что-то работать, но даже тогда я не уверен. И я не знаю, если это будет дыра в безопасности, может быть, кто-то еще может говорить об этом. Возможно, это будет выглядеть так:

  1. главная страница устанавливает идентификатор сеанса и передает его в URL iframe через переменную get
  2. iframe получает информацию о кликах и отправляет ее в переменную Session посредством вызова ajaxing скрипту на сервере.
  3. Затем главная страница читает (как?) Файл cookie сеанса и вносит изменения в зависимости от его значения.

В общем, вы можете обнаружить, что может быть намного проще и безопаснее получить то, что вы хотите, используя другой метод.

1 голос
/ 03 января 2011

Поскольку эта карта загружена внутри iFrame, невозможно запускать какие-либо прослушиватели событий javascript для ссылок, а также невозможно изменить html.

0 голосов
/ 09 января 2011

Существует частичное решение .

Вы можете добавить абсолютно позиционированный тег DIV поверх IFRAME и вместо этого захватывать клики. Смотрите пример здесь, заштрихованный в 20% альфа-красном.

http://www.jsfiddle.net/rkd59/6/

Однако это означает, что карта работает в «режиме только для чтения», и хотя вы можете захватить событие щелчка, вы не будете знать, по какой ссылке щелкнул пользователь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...