【问题标题】:Is there anyway for IE11 to support BigInt?无论如何,IE11 是否支持 BigInt?
【发布时间】:2020-12-25 14:22:42
【问题描述】:

我试图在 stackoverflow 和谷歌中寻找答案,以寻找任何方式来支持 IE 11 中的 BigInt。有没有人成功地为 IE(和旧版本的 Safari)添加了对 BigInt 的支持?目前我正在开发一个使用 BigInt 的插件。在 IE 中运行 outook-addin 会引发 BigInt 未定义错误。

我目前正在看这两个:

https://github.com/GoogleChromeLabs/jsbi

https://github.com/peterolson/BigInteger.js

【问题讨论】:

  • 我认为在 IE 11 中无法支持 BigInt。我还测试了 BigInteger.js,它无法使 BigInt 在 IE 11 中工作。JSBI 似乎也不支持IE 11. 转译BigInt 是一个极其复杂的过程,会导致严重的运行时性能损失。直接 polyfill BigInt 也是不可能的,因为该提案改变了几个现有运营商的行为。
  • @YuZhou 感谢您的回答。至于 JSBI,可能有办法让它适用于 IE (github.com/GoogleChromeLabs/jsbi/issues/47) 但我还没有尝试过。再次感谢。
  • 谢谢@ShreyasBhat。我也看过那个参考资料。
  • 不用担心。您可以试一试,让我们知道您的测试结果。

标签: javascript internet-explorer outlook-addin


【解决方案1】:

不,没有。从来没有计划添加对 Internet Explorer 的支持,而且随着 Micrsoft 很快放弃对 IE 的支持,我认为它不会有任何支持。看看MDN page for BigInt

【讨论】:

  • 感谢您的回答。我看到了支持 bigint 的浏览器表,而 IE 不支持 BigInt。但是,如果我要使用 BigInteger/JSBI 库,并将我代码中的所有“BigInt”引用替换为 BigInteger 或 JSBI 引用,你认为这会起作用吗?谢谢。
  • 实在看不出来,我就说试试看行不行?
  • 再次感谢您的想法。我找到了一种让 BigInt 以某种方式与 IE 一起工作的方法。
  • 不错!你是怎么做到的? (此外,将其留给可能遇到相同问题的未来用户总是有帮助的)
  • 下面的答案是我所做的。我将其标记为已接受的答案。再次感谢你。我在stackoverflow中潜伏了很长时间,贡献的感觉很好。 :)
【解决方案2】:

你可以试试这个 npm 库。在基于 JSBI 的 BigDecimal 的帮助下执行任意算术计算的计算器实用程序。

npm install jsbi-calculator

它适用于 IE11。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Jsbi-calculator Test</title>
    <script src="https://cdn.jsdelivr.net/npm/jsbi-calculator/dist/jsbi-calculator-umd.js"></script>
  </head>
  <body></body>
  <script type="text/javascript">
    const expressionOne = "((10 * (24 / ((9 + 3) * (-2)))) + 17) + 5";
    const resultOne = JBC.calculator(expressionOne);
    console.log(resultOne);
    // -> '12'

    const userAgent = navigator.userAgent;
    const isIE11 =
      userAgent.indexOf("Trident") > -1 && userAgent.indexOf("rv:11.0") > -1;
    let max;
    // MAX_SAFE_INTEGER not available in IE11
    max = isIE11 ? "9007199254740991" : String(Number.MAX_SAFE_INTEGER);

    console.log(max);
    // -> '9007199254740991'
    const expressionTwo = max + " + 2";
    const resultTwo = JBC.calculator(expressionTwo);
    console.log(resultTwo);
    // -> '9007199254740993'
  </script>
</html>

【讨论】:

    【解决方案3】:

    这几乎是一个骗局: Outlook/IE failing to run addins using BigInt data type

    以防万一:

    这是我为使 BigInt 在 IE11 中为我的 Outlook-Addin 工作所做的工作:

    1. 已将JSBI Library 安装/添加到我的项目中。
    2. 添加了一些来自JSBI-dataviews 的dataview polyfills。请看我的 cmets。
    3. 同样基于elk-chat的一些修改

    希望对大家有所帮助。

    【讨论】:

      猜你喜欢
      • 2016-10-22
      • 1970-01-01
      • 2014-11-10
      • 1970-01-01
      • 2019-01-22
      • 1970-01-01
      • 1970-01-01
      • 2020-04-14
      相关资源
      最近更新 更多