关于向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失败的原因是什么?
答案 0 :(得分:0)
事实证明,页面上有第三方脚本的引用(Comodo SSL验证),当然不需要在页面的移动版本上。 jQuery Mobile试图操纵相关的DOM,导致错误。
答案 1 :(得分:0)
感谢您指点我正确的方向。我一直在寻找为什么popup方法(JQuery Mobile)不能在.aspx页面上工作的日子。 Visual Studio使用scriptmanager自动初始化页面。
解决方案是在Asp:Scriptmanager标记中注释掉以下行,因为它与页面顶部的JQuery引用冲突:
<asp:ScriptReference Name="jquery" />