私は 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>
最善の解決策を願っています。