Как изменить высоту IFRAME, если источник находится на другом домене? - PullRequest
0 голосов
/ 27 февраля 2012

Я думаю, что эта опция недоступна, но, возможно, вы знаете некоторые стратегии для этого!Я на http://www.mydomain.com, и я поставил iframe с jquery другого домена:

​<div id="myContent​​​​​​​"></div>​

$('#myContent').html('<iframe id="myFrame" src="www.anotherdomain.com"></iframe>');​

Ну, страница, которую я загружаю, www.anotherdomain.com, моя, поэтому я могудобавьте любой код!

Что я хотел бы сделать, это установить высоту myFrame относительно реального размера загруженной страницы (которую я не могу знать, она может изменяться с течением времени).

Есть ли способ, где я могу сообщать родительскому DOM (mydomain.com) размер вставленной страницы (anotherdomain.com)?

Я не знаю, я так думаю, но зачемне спрашивай.

Ответы [ 3 ]

2 голосов
/ 27 февраля 2012

Вы можете отправлять сообщения (такие как высота фрейма) между фреймами в разных доменах, используя postMessage: https://developer.mozilla.org/en/DOM/window.postMessage

1 голос
/ 28 февраля 2012

Единственное решение, которое я нашел для этого, - передать высоту iframe через URL.Вы можете найти мой тест здесь:

http://jsfiddle.net/Grsmto/nBWrJ/2/ (обновлено)

Это решение работает в кросс-браузерах (chrome, ff, т.е. все версии, мобильные и т. Д.).) и кросс-домен.

У вас ДОЛЖЕН быть доступ к самому коду iframe И к хосту iframe.Вы можете обновить высоту iframe, когда захотите (даже если изменилось содержимое), просто вызвав функцию publishHeight () внутри вашего iframe.

Это должно работать без jquery (в основном написано на чистом javascript ...).Единственное неудобство заключается в том, что у вас будет высота в URL, например:

http://www.yourdomain.com/index.html#1458px

Но вы должны легко удалить ее или изменить на что-то менее уродливое.

РЕДАКТИРОВАТЬ: Кажется, что Disqus и Twitter используют эту библиотеку для этого: http://easyxdm.net/wp/

РЕДАКТИРОВАТЬ 2: На своей странице вы помещаете код на первую страницу jsfiddle.В ваш iframe вы помещаете код iframe (красный div "myiframe" в правом нижнем углу).Надеюсь, это понятно ... Но проверьте мою ссылку ниже, это должно быть лучшее и более простое решение.

1 голос
/ 27 февраля 2012

Междоменная связь очень ограничена и невозможна в зависимости от удаленного хоста. http://www.ibm.com/developerworks/library/wa-aj-jsonp1/ Вы можете использовать JSONP, чтобы попытаться получить информацию с удаленного сайта, но это очень сложно и не для новичков.

Обходной путь, который я нашел и который работал для меня, заключался в том, что я вместо этого использовал язык на стороне сервера, чтобы включить удаленный файл. так вместо

Я сделал PHP на стороне сервера, например:

<?php include 'http://www.example.com/file.txt?foo=1&bar=2'; ?>

Это, конечно, применимо, только если вы используете PHP. Как только я включил его таким образом, я смог манипулировать элементами DOM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...