Javascript 代码在 IE11 移动浏览器中未定义,但在 Chrome、Firefox、IE 中有效

Javascript code undefined in IE11 Mobile browser but working in Chrome, Firefox, IE

我 运行 在我尝试在 Windows Phone IE11 移动版上测试的网站上遇到了问题。基本上,在 Iphone、Android、Chrome、Firefox 甚至非 windows phone IE11 上,这段代码都可以正常工作,但在 IE11 Mobile 上以下代码警告“'App' 未定义。”

这是剃须刀 cshtml:

    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/modernizr")
    @Scripts.Render("~/bundles/bootstrap")
    @Scripts.Render("~/bundles/app")
    <script>
        $(document).ready(function () {
            try {
                var overlayUrl = "@Url.Content("~/Content/Images/front_license_outline.png")";
                var handleUrl = "@Url.Action("HandlePicture")";
                App.init(overlayUrl, handleUrl);
            } catch(ex) {alert(ex.message);}
        });
    </script>

这里是 app.js 文件的删节版本,该文件定义在我测试过的所有其他浏览器上。

var App = function() { 
    var init = function(overlayurl, hpu) {
        //My Code
    }

    return { init: init };
}();

我真的不知道会发生什么,我想帮助弄清楚如何为 WP EI11 Mobile 修复此问题或解决此问题的一些方法。

Jquery - 版本 1.10.2
Modernizer - 版本 2.6.2
Boostrap - 版本 3.3.6

如果您需要有关我的代码的更多信息,或者认为我可能没有包含解决此问题的重要信息,请告诉我,我将非常乐意提供。预先感谢您的帮助。

::编辑::
我已经测试过编辑 App.init 函数中的每一行以及我在其他地方可以找到的尽可能多的无关行,但问题仍然存在。

var App = function() { 
    var init = function() {
        //This is now literally no code here.
    }

    return { init: init };
}();

和剃须刀 .cshtml 文件:

    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/modernizr")
    @Scripts.Render("~/bundles/bootstrap")
    @Scripts.Render("~/bundles/app")
    <script>
        $(document).ready(function () {
            try { App.init(); } 
            catch(ex) { alert(ex.message); }
        });
    </script>

alert(ex.message) 仍然被触发。 'App' 未定义。

通常有很多事情资源管理器做不到。检查您在代码中所做的事情在 IE 中是否可行。示例通常带有一个 if/else 语句,指定 IE 的代码和其他浏览器的代码。这是一个例子:

if (window.XMLHttpRequest) { // This would be the object you want to use
    // code for browser with x tool
    xmlhttp = new XMLHttpRequest();
 } else {
    // code for old IE browser without the tool
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    // This would be the alternative in this browser
}

我不确定这是否是您要查找的内容,但希望对您有所帮助。

我现在已经离开了这个问题,决定做一些我认为完全不相关的事情;弄清楚为什么 bootstrap 网格系统无法正常显示。当我这样做时,我偶然发现了一篇建议我需要添加元标记的文章:

<meta http-equiv="X-UA-Compatible" content="IE=edge">

我的 .cshtml 文件头部的这个元标记解决了这个问题,原因我完全不知道。据我所知,这在其他浏览器中也没有任何副作用。使用此标记,app.js 文件可在 IE11 Mobile 中正确加载。

目前,它解决了问题,但我打算仔细研究它到底在做什么。我希望这可以帮助任何处理类似问题的人。