Resizeable iframe

In iframe

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
  //http://www.onlineaspect.com/2010/01/15/backwards-compatible-postmessage/
  var RUAXD = (function () {
    var interval_id,
      last_hash,
      cache_bust = 1,
      attached_callback,
      window = this

    return {
      postMessage: function (message, target_url, target) {
        if (!target_url) {
          return
        }
        target = target || parent // default to parent
        if (window['postMessage']) {
          // the browser supports window.postMessage, so call it with a targetOrigin
          // set appropriately, based on the target_url parameter.
          target['postMessage'](message, target_url.replace(/([^:]+:\/\/[^\/]+).*/, '$1'))
        } else if (target_url) {
          // the browser does not support window.postMessage, so use the window.location.hash fragment hack
          target.location = target_url.replace(/#.*$/, '') + '#' + +new Date() + cache_bust++ + '&' + message
        }
      },
      receiveMessage: function (callback, source_origin) {
        // browser supports window.postMessage
        if (window['postMessage']) {
          // bind the callback to the actual event associated with window.postMessage
          if (callback) {
            attached_callback = function (e) {
              if (
                (typeof source_origin === 'string' && e.origin !== source_origin) ||
                (Object.prototype.toString.call(source_origin) === '[object Function]' && source_origin(e.origin) === !1)
              ) {
                return !1
              }
              callback(e)
            }
          }
          if (window['addEventListener']) {
            window[callback ? 'addEventListener' : 'removeEventListener']('message', attached_callback, !1)
          } else {
            window[callback ? 'attachEvent' : 'detachEvent']('onmessage', attached_callback)
          }
        } else {
          // a polling loop is started & callback is called whenever the location.hash changes
          interval_id && clearInterval(interval_id)
          interval_id = null
          if (callback) {
            interval_id = setInterval(function () {
              var hash = document.location.hash,
                re = /^#?\d+&/
              if (hash !== last_hash && re.test(hash)) {
                last_hash = hash
                callback({ data: hash.replace(re, '') })
              }
            }, 100)
          }
        }
      }
    }
  })()
</script>
<script type="text/javascript">
  var parent_url = decodeURIComponent(document.location.hash.replace(/^#/, ''))
  function send(msg) {
    RUAXD.postMessage(msg, parent_url, parent)
    return false
  }
</script>
<script type="text/javascript">
  jQuery(document).ready(function ($) {
    //alert($('body').height() + ' hash: ' + window.location.hash);
    send($('body').height())
  })
</script>

Notice that jQuery is actualy not nessesary for this script.

Parent

<iframe
  id="RUAFRAME"
  allowTransparency="1"
  frameborder="0"
  scrolling="no"
  src="http://local.rabota.ua/export/context/company.aspx?ntid=1074"
  style="width:100%;border:none;"
></iframe>
<script type="text/javascript">
  var RUAXD = (function () {
    var interval_id,
      last_hash,
      cache_bust = 1,
      attached_callback,
      window = this

    return {
      postMessage: function (message, target_url, target) {
        if (!target_url) {
          return
        }
        target = target || parent // default to parent
        if (window['postMessage']) {
          // the browser supports window.postMessage, so call it with a targetOrigin
          // set appropriately, based on the target_url parameter.
          target['postMessage'](message, target_url.replace(/([^:]+:\/\/[^\/]+).*/, '$1'))
        } else if (target_url) {
          // the browser does not support window.postMessage, so use the window.location.hash fragment hack
          target.location = target_url.replace(/#.*$/, '') + '#' + +new Date() + cache_bust++ + '&' + message
        }
      },
      receiveMessage: function (callback, source_origin) {
        // browser supports window.postMessage
        if (window['postMessage']) {
          // bind the callback to the actual event associated with window.postMessage
          if (callback) {
            attached_callback = function (e) {
              if (
                (typeof source_origin === 'string' && e.origin !== source_origin) ||
                (Object.prototype.toString.call(source_origin) === '[object Function]' && source_origin(e.origin) === !1)
              ) {
                return !1
              }
              callback(e)
            }
          }
          if (window['addEventListener']) {
            window[callback ? 'addEventListener' : 'removeEventListener']('message', attached_callback, !1)
          } else {
            window[callback ? 'attachEvent' : 'detachEvent']('onmessage', attached_callback)
          }
        } else {
          // a polling loop is started & callback is called whenever the location.hash changes
          interval_id && clearInterval(interval_id)
          interval_id = null
          if (callback) {
            interval_id = setInterval(function () {
              var hash = document.location.hash,
                re = /^#?\d+&/
              if (hash !== last_hash && re.test(hash)) {
                last_hash = hash
                callback({ data: hash.replace(re, '') })
              }
            }, 100)
          }
        }
      }
    }
  })()

  var RUADOMAIN = document.getElementById('RUAFRAME').src.replace('http://', '').split('/').shift()
  document.getElementById('RUAFRAME').src = document.getElementById('RUAFRAME').src + '#' + encodeURIComponent(document.location.href)

  RUAXD.receiveMessage(function (message) {
    document.getElementById('RUAFRAME').style.height = parseInt(message.data) + 'px'
    //alert(message.data + ' parent');
  }, 'http://' + RUADOMAIN)
</script>

Script cant send messages in both directions, between differrent domains.

Found at: http://www.onlineaspect.com/2010/01/15/backwards-compatible-postmessage/

Example: http://onlineaspect.com/uploads/postmessage/parent.html