JavaScript没有在IE中没有开发者控制台的情况下运行(不能归因于缺少控制台)

时间:2012-07-12 07:08:50

标签: javascript internet-explorer console

我正在编写一个Web应用程序平台,为浏览器提供JavaScript应用程序。毋庸置疑,我在文档加载后使用JS方法启动了一个应用程序,但是在IE9中,如果开发人员控制台没有摆弄,则没有任何反应。

这似乎是典型的缺少控制台问题,但我无法通过添加控制台检查或从源代码中删除控制台调用来修复它。

你们能找到我出错的地方吗?

我正在使用相同的平台为多个单独的网络应用程序提供服务,因此您还可以查看以下内容(问题看起来一直都是这样):

1 个答案:

答案 0 :(得分:1)

所有版本的Internet Explorer都不支持Object.keys: 请参阅以下内容:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys 以下(来自上面提到的来源)将Object.keys添加到不支持它的浏览器中:


if (!Object.keys) {
  Object.keys = (function () {
    var hasOwnProperty = Object.prototype.hasOwnProperty,
        hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),
        dontEnums = [
          'toString',
          'toLocaleString',
          'valueOf',
          'hasOwnProperty',
          'isPrototypeOf',
          'propertyIsEnumerable',
          'constructor'
        ],
        dontEnumsLength = dontEnums.length

    return function (obj) {
      if (typeof obj !== 'object' && typeof obj !== 'function' || obj === null) throw new TypeError('Object.keys called on non-object')

      var result = []

      for (var prop in obj) {
        if (hasOwnProperty.call(obj, prop)) result.push(prop)
      }

      if (hasDontEnumBug) {
        for (var i=0; i 

In addition, your method of checking the existence of console is erroneous :

Try running (http://jsfiddle.net/PytAh/) in internet explorer:

if (console){
    alert("there");
} else {
    alert("not there");
}

It will generate an error showing that console does not exist. You can replace it by :

if (window.console){
    alert("there");
} else {
    alert("not there");
}