2013-03-11 11 views
6

Mam element iframe, który wstrzykuje strony, nazywa go "pomocnikiem". Dlatego z powodu tej samej reguły pochodzenia muszę ustawić domenę iframe tak samo jak domena okna nadrzędnego. Ale nie mogę uzyskać dostępu do domeny okna nadrzędnego. Jak można go rozwiązać?Dynamicznie ustawić document.domain na iframe

Aktualizacja # 1

Kod ten jest obecnie pracuje dla domen 2. poziom:

pathArray = window.location.host.split('.'); var arrLength = pathArray.length; var domainName = pathArray.slice(arrLength - 2, arrLength).join('.'); document.domain = domainName;

ale muszę jakoś go z okna nadrzędnego zamiast polegać na domenie 2. poziom

+0

Twój iframe pochodzi z innego serwera? wtedy nie ma znaczenia, co ustawiłeś w dokumencie. Musi pochodzić z tej domeny – mplungjan

+1

Jeśli ostatnie części domeny nie są takie same, zapomnij o tym. Jest używany do dopasowania sales.domain.com do shopping.domain.com, a nie site.sales.com z site.shopping.com – mplungjan

+0

Tak, to będzie to samo, po prostu nie wiem, na gorąco, aby uzyskać go z okna nadrzędnego. – Suhan

Odpowiedz

7

ja nie wiem, czy to pomoże, ale używam tego w iframe

try { 
      var domainName = window.parent.parent.iframeData.domainName; 
     } 
     //Access violation 
     catch (err) { 
      document.domain = window.location.hostname.replace('www.', ''); 
     } 

Więc sprawdzić czy domena już ustawiony mamy wyjątek ang zgadnij domenę, w każdym przypadku, nie ma potrzeby, aby ustawić domenę

EDIT: bardziej poprawnie używać Umieść wiadomość ustawić domenę razie potrzeby

2

Krótko mówiąc, nie można. Ustawienie document.domain działa tylko wtedy, gdy iFrame i okno zawierające są częścią tej samej domeny. Jeśli przeglądarka pozwoliłaby ustawić document.domain na coś innego niż domena, w której się znajdował, byłaby to naruszenie bezpieczeństwa. Weź pod uwagę, że każdy złośliwy skrypt mógłby po prostu powiedzieć "naprawdę nie, zaufaj mi tego", a przeglądarka zasadniczo powiedziałaby: "Och, okej, ponieważ tak ładnie prosiłeś, oto wszystko, czego potrzebujesz".

document.domain można ustawić tylko na domenę nadrzędną rzeczywistej domeny strony. Jeśli element iframe i okno zawierające nie mają co najmniej tego samego, to żadna przeglądarka nie zezwoli na rozmowę.

Chyba że źle zrozumiałem twoje pytanie. Możesz dodać kilka przykładów do wyjaśnienia.

1

Zakładając, że rodzic może być a.domain.com , a iframe to b.domain.com - wtedy możesz zrobić to, co chcesz. Jeśli trzeba wiedzieć, co rodzic jest przekazać go w atrybucie iframe src lub spróbuj document.referrer

+0

Na przykład mam domenę nadrzędną 6.weather.ch, a jeśli używam mojego kodu, mam domenę iframe weather.ch, a odmowa dostępu – Suhan

+0

Następnie kod nadrzędny musi ustawić HIS document.domain na "weather.ch" lub ". weather.ch "(nie pamiętam, czy jest to kropka wiodąca czy nie) – mplungjan

Powiązane problemy