jQuery Mobile导致jQuery中的Access Denied

时间:2012-04-19 18:49:03

标签: jquery-mobile

关于向ASP.Net MVC 4应用程序添加移动功能,我正在关注this tutorial

当我启动应用程序(导致加载登录页面)时,我在jQuery 1.7.2中的以下点得到Access denied(也用1.7.1再现)

if ( elem.parentNode ) { // Access denied here, Line 6081
    elem.parentNode.removeChild( elem );
}

沿着调用堆栈走,我在jquery.mobile-1.1.0.js中看到以下内容(调用堆栈上还有一些其他方法)

// Called from .initializePage:
if ( !$pages.length ) {
    $pages = $( "body" ).wrapInner( "<div data-" + $.mobile.ns + "role='page'></div>" ).children( 0 ); // Called from here, Line 7475
}

// First method in jquery.mobile:
if( $.mobile.autoInitializePage ){
    $.mobile.initializePage();  // Called from here, Line 7541
}

如果我从我的应用程序中注释掉jquery.mobile,它就像以前一样工作:

// _Layout.cshtml:
<script src="@Url.Content("~/Scripts/jquery-1.7.2.js")" type="text/javascript"></script>
@*<script src="@Url.Content("~/Scripts/jquery.mobile-1.1.0.js")" type="text/javascript"></script>*@
<script src="@Url.Content("~/Scripts/jquery-ui-1.8.19.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

所有JavaScript文件都是通过主项目域中的内置VS2010 Web服务器提供的。

更新

经过进一步检查,我意识到这是jQuery Mobile在发生错误时正在做的事情:

// find and enhance the pages in the dom and transition to the first page.
// if no pages are found, create one with body's inner html
$pages = $( "body" ).wrapInner( "<div data-" + $.mobile.ns + "role='page'></div>" ).children( 0 );

导致jquery.mobile失败的原因是什么?

2 个答案:

答案 0 :(得分:0)

事实证明,页面上有第三方脚本的引用(Comodo SSL验证),当然不需要在页面的移动版本上。 jQuery Mobile试图操纵相关的DOM,导致错误。

答案 1 :(得分:0)

感谢您指点我正确的方向。我一直在寻找为什么popup方法(JQuery Mobile)不能在.aspx页面上工作的日子。 Visual Studio使用scriptmanager自动初始化页面。

解决方案是在Asp:Scriptmanager标记中注释掉以下行,因为它与页面顶部的JQuery引用冲突:

<asp:ScriptReference Name="jquery" />