在jQuery 2.2.0升级后动态创建jQuery UI对话框错误

时间:2016-04-27 19:50:01

标签: javascript jquery jquery-ui iframe

我使用jQuery UI 1.11.4创建了一些Dialog。我试图从1.11.3升级我的jQuery到2.2.0。尝试初始化jQuery UI对话框时收到错误。

 $deptdialog = $('<div id="deptdialog"></div>')
    .html('<iframe id="deptiframe" style="width:100%;" scrolling="no" src="" />')
    .dialog({ ... });

像这样初始化之后..

$deptdialog .dialog('open');

我收到此错误

Uncaught TypeError: Cannot read property 'pageYOffset' of null

当踩到jQuery时,这行就出错了

win = getWindow( doc );
top: box.top + win.pageYOffset - docElem.clientTop,

胜利最终为空。有人指出我为什么会发生这种情况,或者如何解决这个问题?是因为我在对话框窗口中加载动态iFrame吗?

1 个答案:

答案 0 :(得分:1)

只有在我的代码段中文档就绪之前声明对话框对象(即:$ deptdialog)时才会出错,否则它会正常工作。

$(function () {
  $deptdialog = $('<div id="deptdialog"></div>')
  .html('<iframe id="deptiframe" style="width:100%;" scrolling="no" src="https://en.wikipedia.org/wiki/Main_Page" />')
  .dialog({autoOpen: false});

  $('#btn').on('click', function(e) {
    $deptdialog.dialog('open');
  })
});
<link href="https://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css" rel="stylesheet"/>
<script src="https://code.jquery.com/jquery-2.2.3.min.js"></script>
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>



<button id="btn">Open Dialog</button>