2012-03-02 3 views
0

Позвольте мне объяснить ситуацию.Fancybox detect from Inside

Сайт A: www.mywebsitea.com Сайт B: www.mywebsiteb.com

Сайт IST хостинг FancyBox. Веб-сайт B размещает контент, открытый в Fancybox A. A.

Мне нужно узнать с веб-сайта B, если мой контент открыт в fancybox A или нет.

Как я могу это сделать? Я пробовал несколько решений, но они не работают.

Одно из этого решения было:

try { 
    if(!(parent.$ && parent.$.fancybox)) 
    { 
     window.location = "http://mylink.com" 
    } 
    } 
    catch(e){ 
    } 

Имеет кому-то другое решение?

Спасибо за помощь. Адриан

+0

Действительно ли iFrame пуст для начала? или все ссылки постоянно меняются, и вам нужно убедиться, что ссылка прошла через нее? Или вы пытаетесь контролировать ошибки сервера, например, 404? – Ohgodwhy

+0

iFrame не пуст. Я начинаю с одной ссылки. Ссылка изменяется во время навигации. Вы можете посмотреть веб-сайт. www.gstaad.ch -> В верхней части веб-сайта нажмите «Livecam». –

ответ

2

You не может достигать родительских переменных, кроме одного домена. См: Same origin policy

Bu вы можете проверить это в IFRAME с

var isInIframe = self != top; 

Если находится в IFRAME, то и вы не можете добраться до верхнего окна, это означает, что какой-либо сайт, показывая свой веб-сайт в IFRAME.

+0

+1 мой ответ должен учитывать «ту же политику происхождения», как указано в @arunes – JFK

0

Если вы хотите знать, если Site B был открыт с Site A внутри iframe, то внутри Site B есть этот скрипт

if(parent.window.location.href =="http://www.mywebsitea.com"){ 
alert('opened from Site A') 
} 

С другой стороны, если вы просто хотите знать, если Site B был открыт из любой точки мира (в том числе Site A), но в пределах FancyBox, то внутри Site B есть этот скрипт

if(parent.jQuery().fancybox) { 
alert("opened inside of fancybox") 
} 
Смежные вопросы