在IE11移动浏览器中未定义Javascript代码,但在Chrome,Firefox,IE中工作

时间:2016-07-25 19:51:05

标签: javascript asp.net-mvc razor windows-phone ie-mobile

我在尝试在Windows Phone IE11 Mobile上测试的网站上遇到了问题。基本上,在Iphone,Android,Chrome,Firefox甚至非Windows手机IE11上,此代码工作正常,但在IE11 Mobile上,以下代码提醒"'应用程序'未定义。"

这是剃须刀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

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

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

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

    return { init: init };
}();

和razor .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>
警告(ex.message)仍然被解雇。 &#39;应用&#39;未定义。

2 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:0)

通常资源管理器不能做很多事情。在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
}

我不确定这是你在找什么,但我希望它有所帮助。