1

私は jQuery モーダル ダイアログを使用しています。ダイアログ内に iframe を埋め込みました。iframe 包含ボタン「検索結果を表示」

「検索結果を表示」ボタンをクリックしても、最初は何も起こりません。結果がテーブルに表示されません (おそらくサーバー リクエストが起動していません)。

ブラウザの他のタブに切り替えたときにのみ表示され、2回目以降はテーブルが正しくレンダリングされます。

var __run = function(getData) {
    yepnope({
      test : $.fn.flexigrid,
      nope : [ 'www/css/flexigrid.css', '/www/javascripts/flexigrid.js'],
      complete : getData
    });

IE8 で __run 関数が初めて呼び出されると、getData (渡された関数) が実行されるはずですが、実行できません。

この問題は IE8 に固有のものです

上記の問題に対処するには?簡単な提案はありますか?

Firefox や Chrome などの他のブラウザでは、すべて正常に動作します。

モーダルフラグをfalseに変更し、[検索結果を表示] ボタンのクリック イベントを最初に試行すると、IE8 で結果が得られますが、モーダル ダイアログが必要なので、これは適切な解決策ではありません。

myWindow.dialog({
                modal : false,

更新: Jquery UI ダイアログ コードを追加

    NewModalUI.popWindow = function($){
    var mWindow = null, mFrame;
    var build = function(){
        mWindow = $('<div id="UI_modal" style="display:none"><iframe id="UI_modalFrame" name="UI_modalFrame" width="100%" height="97%" SCROLLING="auto" frameborder="0"></iframe></div>').appendTo($('body'));
        mFrame = mWindow.find('iframe')
    };
    var isReady = function(){
        return mWindow;
    };
    var isVisible = function(){
        return (!mWindow.is(':hidden'))
    };
    var close = function(){
        __log("Window closed ...");
        mFrame.attr('src', '');
        mWindow.dialog('close')
    };
    var open = function(url){
        if(!isReady()){
            build()
            mFrame.bind('load.modalWindow',function(){
                var $div = mFrame.contents().find('.submitContainerDiv');
                if($div.find('.submitBtns').find('input').length == 1){
                    $div.hide()
                }
            })
            mFrame.attr('src', url)
            mWindow.dialog({
                modal : true,
                height: $(window).height()-100,
                minHeight: '250',
                maxHeight: '90%',
                width:'80%',
                minWidth : '50%',
                maxWidth:'90%',
                buttons : { 
                    'Cancel':function(){
                        $(this).dialog('close')
                    }
                },
                beforeClose : function(){
                    mFrame.attr('src', '')
                }
            })
        }

        if(!isVisible()){
            mFrame.attr('src', url)
            mWindow.dialog('open')
        }else{
            mFrame.attr('src', url)
        }
    };
    return {
        window: mWindow,
        build : build,
        isReady : isReady,
        isVisible : isVisible,
        close : close,
        open : open
    }
}(jQuery);

IE8で生成されたhtmlコードも観察されました

IE8 または yepnope のいずれかで、null 値を持つ onload イベント属性をスクリプト タグ Ex に追加します。

<script src="/www/javascripts/flexigrid_faster.js" onload="null"></script>

2 回目以降は、yepnope によってロードされたリソースとグリッドに入力された検索結果の onload イベント属性値が変更されます。元。

 <script src="/www/javascripts/flexigrid_faster.js" type="script" height="0" width="0"

 onload="function(){k.call(this,r)}"></script>

最善の解決策を願っています。

4

1 に答える 1