jQueryMobile - 以编程方式打开弹出窗口失败并显示js错误

时间:2016-07-11 10:25:48

标签: javascript jquery jquery-mobile

以编程方式打开jQuery Mobile弹出窗口会导致javascript运行时错误。

0x800a138f - JavaScript运行时错误:无法获取未定义或空引用的属性“nodeName”

我已经使用IE和Chrome进行了测试,结果相似。

<div data-role="popup" id="myPopup" data-overlay-theme="b" data-theme="c" data-dissmissible="false" class="ui-corner-all">
    <div data-role="header"><h1></h1></div>
    <div data-role="content" data-theme="a" class="ui-corner-all ui-content">
        <p id="myPopupText">test test</p>
    </div>
</div>

<script type="text/javascript">
    $("#main").on("pageinit", function () {
        $("#myPopup").popup("open", { transition: "slideup" });
    });
</script>

我也在.popup(“open”)之前尝试过.popup()。在VS2015中进行调试我看到弹出窗口显示,但在运行时它会在异常被触发时再次消失。

导致此异常的原因是什么,我该如何解决?

1 个答案:

答案 0 :(得分:0)

您是否要在第一次加载页面时打开弹出窗口?如果是这样的话,请使用$(document).on(...并尝试稍微延迟:

$(document).on("pageinit","#main", function(){ 
   setTimeout(function(){
      $("#myPopup").popup("open", { transition: "slideup"   });
    }, 10);   
});  

您希望每次访问该页面时都弹出它吗?使用pagecontainer小部件transition event

$(document).on( "pagecontainertransition", function( event, ui ) { 
    if (ui.toPage.prop("id") == "main"){
      setTimeout(function(){
        $("#myPopup").popup("open", { transition: "flip"   });
      }, 10); 
    }   
});

是否要在页面加载后启动弹出窗口以响应用户操作?

$(document).on("pagecreate","#main", function(){ 
  $("#btnPop").on("click", function(){
    $("#myPopup").popup("open", { transition: "flip"   });
  });
}); 

DEMO