2011-10-27 24 views
2

私はRailsアプリケーションを開発しています。 1つの機能は、顧客にHTMLページをプレビューする機能を提供することです。プレビューコンテナのCSS /スタイリングがプレビュー自体のCSS /スタイリングと分離されるように、これらのプレビューをIFRAMEにロードしています。これまでのところ、これはかなりうまくいきます。iframe onload関数は未定義です

IFRAMEが読み込まれると、自動サイズ変更の問題が発生しています。私はこれだけのjQueryを経由してIFRAMEのloadイベントに機能を付加することにより、Chromeで偉大な作業をしている:

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(); 
    }); 
}); 

これはIEで非常にうまく機能していない、しかし - イベントが発生しないように表示されたときのページ最初の負荷。私がしようとしています

ワン周りの仕事はそうのようなIFRAMEのonload属性に直接機能を割り当てることです:

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

私はここが午前問題は、IFRAMEがshow_preview()機能の場合を見つけることができないということですそれは私のJavaScriptファイルで定義されています。関数を抽出してIFRAMEの上にあるSCRIPTタグに入れれば、すべて正常に動作します。

何か助けてくれてありがとうございます。私は何か骨折していますか?

マックス

答えて

2

それはあなたのhtmlコードで表示されます、ウィンドウオブジェクトへのあなたの機能を取り付けます

window.show_preview = function() { ... } 
+0

恐ろしい - ありがとう – maxenglander