função de onload de iframe indefinida

Eu estou desenvolvendo uma aplicação Rails. Um recurso é fornecer aos clientes a capacidade de visualizar páginas HTML. Estou carregando essas visualizações em um IFRAME, para que o CSS/estilo do contêiner de visualização seja separado do CSS/estilo da própria visualização. Até agora isso funciona muito bem.

Um problema que estou tendo é o redimensionamento automático do IFRAME, uma vez que tenha sido carregado. Eu tenho esse ótimo trabalho no Chrome apenas anexando uma função ao evento load do IFRAME via jQuery:

var show_preview = function() {
  $("#preview-loading").hide();
  $(this).show();
  this.style.height = this.contentWindow.document.body.scrollHeight + "px";
  return this.style.width = this.contentWindow.document.body.scrollWidth + "px";
}

$(function() {     
  return $("#preview_frame").load(function() {
    show_preview();
  });
});

Isso não funciona muito bem no IE, no entanto - o evento parece não ser disparado quando a página é carregada pela primeira vez.

Uma solução alternativa que estou tentando é atribuir uma função diretamente ao atributo onload do IFRAME da seguinte forma:

 <iframe onload="show_preview();" ...></iframe>

O problema que estou tendo aqui é que o IFRAME não pode encontrar a função show_preview() se ela estiver definida no meu arquivo JavaScript. Se eu extrair a função e colocá-la em uma tag SCRIPT acima do IFRAME, tudo funcionará bem.

Aprecie qualquer ajuda - com certeza eu estou fazendo algo tonto.

Max

2

1 Respostas

Anexe sua função ao objeto window e, em seguida, ela ficará visível em seu código html:

window.show_preview = function() { ... }
2
adicionado
Perfeito, obrigado
adicionado o autor maxenglander, fonte
JavaScript Brasil OFICIAL
JavaScript Brasil OFICIAL
4 138 dos participantes

Grupo sobre JavaScript do Brasil