Programowy dostęp do ramki iframe, która używa identyfikatora URI danych jako źródła
Tworzę ramkę iframe programowo przy użyciu identyfikatora URI „data”:
<iframe id="myFrame" src='data:text/html;charset=utf-8,<!DOCTYPE html><html><head></head><body><h1>Hello.</h1></body></html>'></iframe>
Ta ramka ładuje się dobrze, ale wydaje się, że praca z ramką iframe programowo trafia do kontroli bezpieczeństwa między domenami.
var iframeDoc = document.getElementById('myFrame').contentWindow.document;
$(iframeDoc.body).find('h1').text('Changed');
Zgłasza błąd w Chrome i Safari:
Niebezpieczna próba uzyskania dostępu do ramki z danymi URL: tekst / html; charset = utf-8, ... z ramki z adresem URL http: // ... Ramka żądająca dostępu ma protokół „http”, do którego uzyskiwany jest dostęp do ramki ma protokół „”. Protokoły muszą się zgadzać.
Oto skrzypce pokazujące błąd bezpieczeństwa:http://jsfiddle.net/bhGcw/4/
Firefox i Opera nie wyrzucają tego wyjątku i umożliwiają zmianę zawartości iframe. Wygląda na to, że Webkit widzi pusty protokół dla URI danych i widzi to jako naruszenie między domenami.
Czy jest jakiś sposób na to?