【问题标题】:IE-11: Object doesn't support property or method 'parseInt'IE-11:对象不支持属性或方法“parseInt”
【发布时间】:2021-02-24 04:00:16
【问题描述】:

我的应用程序前端是在 angular js 1.4.14 中构建的,我仅在 IE-11 中遇到以下错误:

对象不支持属性或方法 'parseInt'

这是我的 HTML:

<div class="form-group">
     <label class="col-sm-2 control-label">Pickup time <span ng-show="pickupTimeIsRange()">range</span>:</label>
           <div class="row col-md-10">
                <div class="col-md-3">
                     <input placeholder="{{ pickupTimeIsRange() ? 'Start time' : 'Time' }}" class="form-control" ui-timepicker ng-model="info.pickup_time_start">
                </div>
                <div class="col-md-3" ng-show="pickupTimeIsRange()">
                     <input placeholder="End time" class="col-md-4 form-control" ui-timepicker ng-model="info.pickup_time_end">
                </div>
           </div>
</div>

这是我的 js 代码:

info.pickup_time_start = getTime('start');
info.pickup_time_end = pickupTimeIsRange() ? getTime('end') : null;

function getTime(time) {
   return !_.has(info.pickup_time, time) || _.isEmpty(info.pickup_time[time])
        ? null
        : moment(info.pickup_time[time], 'HH:mm');
}

现在,这里出了什么问题?我的代码是在应用程序运行时编译的,因此上述错误发生在 lib.js 文件中,该文件是一个已编译的 js 代码文件,我不知道在哪里实际使用了 Number.parseInt。有没有办法强制使用全局parseInt?或者有什么方法可以弄清楚Number.parseInt 的确切使用位置? 我知道当上面的代码运行时会弹出这个错误,比如当ui-timepicker被执行时,当我尝试选择一个时间时。所以ui-timepicker 在代码中的某处使用了Number.parseInt,我无法弄清楚究竟在哪里。

编辑

顺便说一句,它在我的本地使用相同的浏览器、相同的代码和相同的操作系统运行良好。这很奇怪,在实时实例上它不起作用!这是为什么呢?

【问题讨论】:

  • 某处的某些代码很可能调用了 IE11 中不存在的 Number.parseInt。那里只有全球parseInt。两者的工作方式完全相同,因此仅对于 IE,它可以填充为Number.parseInt = parseInt(带有适当的保护)。但是,从根本上来说,您似乎有一些不符合 IE11 的代码,并且修补 this 可能是一个临时解决方案。代码不存在于您显示的内容中,因此您必须找到它的位置并随后解决它。
  • @VLAZ 浏览器中的错误告诉我它在 lib.js 文件中,但那是框架文件,那么我怎么知道我的代码的哪一部分触发了它?
  • 通过创建minimal reproducible example 并使用调试器
  • 你使用哪个框架?您是否使用了一些与 IE 不兼容的代码,然后对其进行了 polyfill?您还可以检查网站在服务器上运行时是否有一些文件未加载。您提供的代码中与parseInt 没有任何关系,我们无法通过它重现问题。我建议您可以提供一个可以重现问题的代码 sn-p,以便我们了解如何提供帮助。

标签: javascript angularjs internet-explorer-11


【解决方案1】:

好吧,我解决了这个问题。在我的情况下,jquerytimepicker 是有问题的。我已将其更新到可用的最新版本,并且问题消失了。

【讨论】:

  • 感谢您发布此问题的解决方案。您可以将您的答案标记为已接受的答案。它可以在未来帮助其他社区成员解决类似的问题。感谢您的理解。
【解决方案2】:

你可以查看parseInt在第841行使用,https://github.com/wvega/timepicker/blob/master/jquery.timepicker.js

如果您想保留旧版本,您可以更新 lib 并将其保存到源文件列表中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    • 1970-01-01
    • 2019-01-28
    相关资源
    最近更新 更多