Jquery 在IE8中,yepnope在第一次尝试时不在iframe中加载资源
我使用jQuery模态对话,在对话中我们嵌入了iframe。 iframe包含按钮“显示搜索结果” 第一次尝试单击“显示搜索结果”按钮时,什么也没有发生。 我的结果未在表中呈现(可能服务器请求未触发) 只有当我切换到浏览器的其他选项卡时,它才会出现,第二次将正确呈现表格Jquery 在IE8中,yepnope在第一次尝试时不在iframe中加载资源,jquery,iframe,internet-explorer-8,jquery-ui-dialog,yepnope,Jquery,Iframe,Internet Explorer 8,Jquery Ui Dialog,Yepnope,我使用jQuery模态对话,在对话中我们嵌入了iframe。 iframe包含按钮“显示搜索结果” 第一次尝试单击“显示搜索结果”按钮时,什么也没有发生。 我的结果未在表中呈现(可能服务器请求未触发) 只有当我切换到浏览器的其他选项卡时,它才会出现,第二次将正确呈现表格 var __run = function(getData) { yepnope({ test : $.fn.flexigrid, nope : [ 'www/css/flexigrid.css',
var __run = function(getData) {
yepnope({
test : $.fn.flexigrid,
nope : [ 'www/css/flexigrid.css', '/www/javascripts/flexigrid.js'],
complete : getData
});
当IE8中第一次调用uu run函数时,则应执行但无法执行getData(传递的函数)
此问题与IE8有关
如何处理上述问题?有什么快速的建议吗?
在其他浏览器如Firefox和Chrome中,一切正常
如果我将模式标记更改为错误,然后第一次尝试“显示搜索结果”按钮单击事件,我将在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);
NewModalUI.popWindow=函数($){
var mWindow=null,mFrame;
var build=function(){
mWindow=$('').appendTo($('body');
mFrame=mWindow.find('iframe')
};
var isReady=函数(){
返回mWindow;
};
var isVisible=function(){
返回(!mWindow.is(':hidden'))
};
var close=function(){
__日志(“窗口关闭…”);
mFrame.attr('src','');
mWindow.dialog(“关闭”)
};
var open=函数(url){
如果(!isReady()){
构建()
mFrame.bind('load.modalWindow',函数(){
var$div=mFrame.contents().find('.submitContainerDiv');
if($div.find('.submitBtns').find('input').length==1){
$div.hide()
}
})
mFrame.attr('src',url)
对话({
莫代尔:是的,
高度:$(窗口)。高度()-100,
最小高度:'250',
最大高度:“90%”,
宽度:'80%',
最小宽度:“50%”,
最大宽度:'90%',
按钮:{
“取消”:函数(){
$(此).dialog('关闭')
}
},
beforeClose:function(){
mFrame.attr('src','')
}
})
}
如果(!isVisible()){
mFrame.attr('src',url)
mWindow.dialog(“打开”)
}否则{
mFrame.attr('src',url)
}
};
返回{
窗口:mWindow,
建造:建造,
isReady:isReady,
isVisible:isVisible,
关:关,,
打开:打开
}
}(jQuery);
还观察了IE8生成的html代码
IE8或yepnope向脚本标记添加具有null值的onload事件属性
前
第二次以后,由yepnope加载的资源的onload事件属性值发生更改,搜索结果填充到网格中。
前
希望找到最好的解决方案。我用jQuery 1.9.1和jQuery UI 1.9.2做了一个例子,应该是不言自明的
myWindow.dialog({
modal : false,
HTML
<a href="#dlg" id="show-dlg">Show dialog</a>
<div id="dlg" class="hide">I am the dialog ;)</div>
CSS
.hide {
display: none;
}
我认为该对话框存在某种错误或配置错误。您能更具体地介绍一下对话JS代码吗?@michalzuber谢谢您的回复。添加jquery对话框js代码供参考。上面的jquery对话框中是否存在任何错误配置?如果是,请告诉我。谢谢,我建议在应该添加分号的地方添加分号,如果它不起作用,我也会尝试在它的基本jqueryui模型对话示例中使用linting。请参阅更新的问题。
;(function ( $, window, document, undefined ) {
$('#show-dlg').on('click', function() {
var id = $(this).attr('href');
$(id).dialog({
bgiframe: true,
resizable: false,
draggable: false,
modal: true
});
return false;
});
})( jQuery, window, document );
.hide {
display: none;
}