0

我正在关注向 ASP.Net MVC 4 应用程序添加移动功能的本教程

当我启动应用程序(导致登录页面被加载)时,我Access denied在 jQuery 1.7.2 中得到以下点(也与 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 失败?

4

2 回答 2

0

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

于 2012-04-19T22:29:15.420 回答
0

感谢您为我指明正确的方向。我一直在寻找为什么弹出方法(JQuery Mobile)在 .aspx 页面上不起作用的原因。Visual Studio 使用脚本管理器自动初始化页面。

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

<asp:ScriptReference Name="jquery" />
于 2015-04-17T14:47:21.783 回答