Tuesday, October 15, 2013

Resize IFrame From Source Page Using window.postMessage in Javascript

Some times you need to use iframes to display content from another page hosted on a different domain and you want to resize the iframe to match the size of the actual content hosted on the source page.

Lets say you have an iframe that looks like this:

1 <iframe id="frGrid" scrolling="auto" src="http://test.com/page.aspx" frameborder="0" style="border:0px; width:100%; height:700px"></iframe>


"http://test.com/page.aspx" is your source page. This page might be a grid that is dynamically generated from a database. This means you don't know how big the page will be. If you knew this information, you could set the height on the iframe to match the height of the source page.

So, what do you do when you don't know the size? What you do is you get the souce page height via javascript and pass it to the parent page where the iframe is hosted. You have to do this via the window.postMessage function in order to avoid the cross domain policy error that you normally get when accessing content hosted on another domain.

To do this, put the following javascript code in the same page where the iframe is located. Put it after the iframe is declared:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <script type="text/javascript">
function GetIFrameHeight() {
var w = window;
if (w.addEventListener) { w.addEventListener("message", SetHeight, false) }
else if (w.attachEvent) { w.attachEvent("onmessage", SetHeight) }
else { w.onMessage = SetHeight }
}

function SetHeight(e) {
var f = document.getElementById('frGrid');
f.style.height = parseInt(e.data, 10) + 'px';
}

GetIFrameHeight();
</script>


What this code is doing is setting up an event listener for the message that will be sent from the source page. All we have to do now is setup the following code on the source page (http://test.com/page.aspx) to send the message:

1 2 3 4 5 6 7 8 9 10 11 <script type="text/javascript">
function SetIFrameHeight() {
try {
var b = document.body;
window.parent.postMessage(b.offsetHeight, "*"); //* means all URLs.
} catch (x) { }
}

setTimeout('SetIFrameHeight()', 50);

</script>

5 comments:

  1. Консоли от корпорации Microsoft не сразу захватили всемирную известность и доверие игроков. 1-ая консоль под названием Xbox, вышедшая в далеком 2001 году, существенно уступала PlayStation 2 по количеству проданных приставок. Однако все поменялось с выходом Xbox 360 - консоли седьмого поколения, которая стала по-настоящему "народной" для обитателей Рф и стран СНГ - http://ru-xbox.ru/load/8. Веб-сайт Ru-Xbox.Ru является пользующимся популярностью ресурсом среди поклонников приставки, так как он предлагает игры для Xbox 360, которые поддерживают все существующие версии прошивок - совершенно бесплатно! Для чего играть на оригинальном железе, в случае если имеется эмуляторы? Для Xbox 360 игры выходили долгое время и находятся как посредственными проектами, так и хитами, многие из которых даже сегодня остаются уникальными для это консоли. Некие пользователи, желающие сыграть в игры для Xbox 360, могут задать вопрос: зачем нужны игры для прошитых Xbox 360 freeboot или разными версиями LT, в случае если есть эмулятор? Рабочий эмулятор Xbox 360 хоть и существует, но он требует производительного ПК, для покупки которого потребуется вложить существенную сумму. К тому же, современные артефакты в виде исчезающих текстур, недостатка некоторых графических эффектов и освещения - могут изрядно попортить впечатления об игре и отбить желание для ее дальнейшего прохождения. Что предлагает этот веб-сайт? Наш портал стопроцентно посвящен играм для приставки Xbox 360. У нас вы можете совсем бесплатно и без регистрации загрузить игры на Xbox 360 через torrent для следующих версий прошивок консоли: - FreeBoot; - LT 3.0; - LT 2.0; - LT 1.9. Каждая прошивка имеет свои особенности обхода встроенной защиты. Потому, для запуска той или прочей игры потребуется скачать специальную ее версию, которая вполне приспособлена под одну из 4 перечисленных выше прошивок. На нашем веб-сайте можно без усилий получить желаемый проект под подходящую прошивку, поскольку возле каждой игры присутствует название версии (FreeBoot, LT 3.0/2.0/1.9), под которую она приспособлена. Гостям данного ресурса доступна особая категория игр для 360-го, предназначенных для Kinect - специального дополнения, которое считывает все движения одного или нескольких игроков, и позволяет управлять с их помощью компьютерными персонажами. Большой выбор ПО Кроме возможности скачать игры на Xbox 360 Freeboot или LT разных версий, здесь вы можете подобрать программное обеспечение для консоли от Майкрософт: - разнообразные версии Dashboard, которые позволяют кастомизировать интерфейс консоли под свои нужды, сделав его более комфортным и современным; - браузеры; - просмотрщики файлов; - сохранения для игр; - темы для консоли; - программы, для конвертации образов и записи их на диск. Кроме перечисленного выше игры на Xbox 360 Freeboot можно запускать не с дисковых, а с USB и других носителей, используя программу x360key, которую можно достать на нашем интернет-сайте. Посетителям доступно множество нужных статей, а помимо этого форум, где вы можете пообщаться с единомышленниками либо попросить совета у более опытнейших владельцев консоли.

    ReplyDelete
  2. С каждым годом людей, у которых есть проблемы со зрением, появляется все больше и больше. Очки - самый востребованный и проверенный способ коррекции зрения - скидки на бредовые очки спб. На нашем сайте компании ROCKINGLOOK вы можете приобрести качественные оправы и линзы для очков по небольшой цене.

    ReplyDelete
  3. Your car could be stolen if you don't remember this!

    Consider that your car was taken! When you approach the police, they inquire about a specific "VIN lookup"

    Describe a VIN decoder.

    Similar to a passport, the "VIN decoder" allows you to find out the date of the car's birth and the identity of its "parent" (manufacturing facility). Additionally, you can find:

    1.Type of engine

    2.Model of a vehicle

    3.The limitations of the DMV

    4.The number of drivers in this vehicle

    You'll be able to locate the car, and keeping in mind the code ensures your safety. The code can be checked in the database online. The VIN is situated on various parts of the car to make it harder for thieves to steal, such as the first person's seat on the floor, the frame (often in trucks and SUVs), the spar, and other areas.

    What happens if the VIN is harmed on purpose?

    There are numerous circumstances that can result in VIN damage, but failing to have one will have unpleasant repercussions because it is illegal to intentionally harm a VIN in order to avoid going to jail or being arrested by the police. You could receive a fine of up to 80,000 rubles and spend two years in prison. You might be stopped on the road by a teacher.

    Conclusion.

    The VIN decoder may help to save your car from theft. But where can you check the car reality? This is why we exist– VIN decoders!

    ReplyDelete
  4. Система бонусов и поощрений в БК 1хбет значительно увеличивает привлекательность компании в глазах пользователей. Весьма выгодные предложения доступны и новичкам, и пользователям, уже имеющим опыт работы на платформе. Среди впечатляющего ассортимента бонусной программы очень легко потеряться. Каждый промокод 1хбет обеспечит право на определенные преференции - промокод 1 икс бет.

    ReplyDelete