Получить полный URL-адрес iframes из другого домена - PullRequest
3 голосов
/ 02 августа 2011

Родительская страница может получить URL (и фрагмент) iframe, но после того, как iframe обновит свой фрагмент URL, родитель не сможет получить обновленный URL с фрагментом.

Пример URL iframe: http://example.com/a/b/c/d.html?k1=v1#i1=j1 (Фрагмент заметки)

Это междоменная среда.Родительский домен отличается от домена iframe.В настоящее время только тестирование с использованием Firefox.

Используя следующий код:

var ifr = document.getElementById('myiframe');
if(ifr){
   alert(ifr.src);
}

Разве это невозможно из-за безопасности?

Я пытаюсь заставить iframe связаться сродитель использует фрагмент в качестве полезной нагрузки.

Оба домена находятся под моим контролем, и я пытаюсь избежать долгого пути для достижения связи между страницами.

Существуют ли какие-либо другие методы, которыене задействовать сервер в оба конца?

1 Ответ

1 голос
/ 02 августа 2011

Вы можете использовать window.postMessage API для связи между фреймами, вызывая postMessage для любого window объекта.Это работает для междоменного обмена сообщениями, если получающий кадр имеет message прослушиватель событий.

postMessage Использование:

otherWindow.postMessage(message, targetOrigin);
//e.g.
yourIFrame.contentWindow.postMessage({curURL: location.href}, "http://www.your2ndDomain.com");
//or
top.postMessage({curURL: location.href}, "http://www.your1stDomain.com");

Для прослушивания сообщений:

window.addEventListener("message", function(e){
  //You must check your origin!
  if(event.origin !== "http://www.your1stDomain.com")
    return;
  //Get the data
  var data = event.data;
  alert(data.curURL);
}, false);
...