2013-09-29 2 views
0

У меня есть букмарклет браузера, который загружает iframe на страницу. Затем мне нужно, чтобы iframe мог передать строку обратно в родительское окно. Страница ребенок имеет следующую функцию:Любой способ заставить postMessage работать с HTTPS?

function post(m){ 
parent.postMessage(m,'*'); 
} 

Это прекрасно работает до тех пор, как на странице ребенка (одного загруженного в IFRAME) находится на HTTP. Но когда это https, postMessage не работает. Я не смог найти документацию об этом или любой способ обойти это.

Любые идеи?

EDIT:

Это происходит как на FF и Chrome (не пробовал IE). Чтобы уточнить: загрузка iframe DOES, это просто, что postMessage не выполняется. На странице HTTP все работает нормально. Код, который я использую для получения строки, приведен ниже:

function listener(event){ 
if (event.origin !== "http://www.mysite.com") 
return 

if (event.data=="string1"){function1();} 
if (event.data=="string2"){function2();} 
} 

if (window.addEventListener){ 
addEventListener("message", listener, false) 
} else { 
attachEvent("onmessage", listener) 
} 
+0

Какой браузер? Отправьте код обработчика событий сообщения с другой стороны. Вы уверены, что iframe загружается? Firefox изменился недавно, так что по умолчанию небезопасные iframe не будут загружаться в защищенном родителе. –

+0

Привет @DG. Я обновил вопрос. – Phil

ответ

7

Мне кажется, вам нужен утренний кофе.

Вот ваши исправления:

if (event.origin.replace('https:', 'http:') !== 'http://www.mysite.com' ) return; 
+3

Вы слышали, что громкий шум снаружи? Это был звук моей ладони, ударившей мне в лоб. Я думаю, что это было слышно во всем мире ... Спасибо! – Phil