2012-06-02 1 views
2

У меня есть расширение Chrome и Firefox, и я делаю то же самое для Safari.iFrame в расширении Safari «Popover»

Эти плагины имеют всплывающее окно. Другими словами, значок, который вы нажимаете, и страница открывается. Всплывающее окно расширения Chrome открывает страницу HTML в папке с плагином iFrame. Расширение FF связывается непосредственно со страницей PHP на сервере для всплывающего окна.

Мне нужно сделать с Safari то, что я сделал с Chrome. Мне нужно создать локальную HTML-страницу с iFrame на странице на сервере. Это работает в chrome, но iFrame в Safari просто пуст.

Спасибо за любую помощь ...

+0

Пожалуйста, ребята ... кто-нибудь? –

+0

Я думаю, что Apple блокирует popovers от загрузки чего-либо не локального расширения, возможно, в ошибочной попытке сделать расширения более безопасными. Во всяком случае, мне не повезло больше, чем вы пытались загрузить веб-страницы в popover. – canisbos

ответ

4

компании Apple не позволяет плавающие фреймы быть загружены в пирог ... но! Вы можете сделать XMLhttpRequest в любой домен (скажите, что теперь?). Да XMLhttpRequest в ЛЮБОЙ домен. Пример:

Я использую это для моих селекторов (потому что я не хочу, чтобы загрузить JQuery или Mootools в расширении):

function $(element) { 
    return document.getElementById(element); 
} 

И вобще XMLHttpRequest так:

http = new XMLHttpRequest(); 
http.open('get', 'http://yoursitehere.com/extension/'); 
http.onreadystatechange = function() { 
    $('target-div-id').innerHTML = http.responseText; 
} 

Таким образом вы можете заполнить целевой div HTML.

+0

Спасибо !!! Я думал о чем-то подобном. В любом случае у меня есть CORS (запросы на кросс-поиск) на моем сервере. Но я не знал, что Safari позволяет отправлять запросы в любой домен. : O –

+0

Еще одна вещь ... Как я могу отправить данные обратно на страницу без использования iFrame? –

+1

Вы можете только запросить данные. Поэтому, если вы хотите добавить контент в popover, вы должны выполнить запрос GET/POST и поместить ответ где-нибудь в содержимое popover. Но если вы хотите отправить данные на свой домен/страницу, вы должны просто что-то сделать с запросом и не отвечать. –