【问题标题】:'Promise' is undefined in IE11“承诺”在 IE11 中未定义
【发布时间】:2021-11-13 08:19:20
【问题描述】:

我已使用此插件在我建立的 Divi 网站中创建弹出窗口: https://wordpress.org/plugins/popups-for-divi/

由于 padStart() 函数,弹出窗口没有在 IE 中打开,我找到了使用以下代码替换 padStart() 函数的替代方法:

if (!String.prototype.padStart) {
    String.prototype.padStart = function padStart(targetLength, padString) {
        targetLength = targetLength >> 0; //truncate if number or convert non-number to 0;
        padString = String((typeof padString !== 'undefined' ? padString : ' '));
        if (this.length > targetLength) {
            return String(this);
        } else {
            targetLength = targetLength - this.length;
            if (targetLength > padString.length) {
                padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed
            }
            return padString.slice(0, targetLength) + String(this);
        }
    };
} <
/script>

现在的问题是,弹出窗口在主页上加载正常,但在其他页面上却没有,我收到此错误:

“承诺”未定义

谁能帮我解决这个问题?这是要检查的网站链接: https://site2.stagging.tk/

谢谢

【问题讨论】:

  • 等等,你的意思是有人还在为 IE 编码?
  • 不完全是@jfriend00。虽然我遇到了一个需要在 IE 上工作的客户。因为他还在用IE。
  • 嗯,IE 没有对 Promise 的原生支持(它真的非常非常老了)。对于Promise,您还必须使用polyfill。尝试将您从未打算这样做的东西移植到 IE 是一场重大的失败战斗。试想一下所涉及的测试,以了解一切确实有效。

标签: popup internet-explorer-11 es6-promise polyfills divi


【解决方案1】:

我可以通过在 Header 中添加这两行代码来解决这个问题:

<script src="https://unpkg.com/es6-promise/dist/es6-promise.auto.min.js"></script>
<script src="https://unpkg.com/unfetch/polyfill/index.js"></script>

谢谢

【讨论】:

  • 感谢您发布此问题的解决方案。您可以将您的答案标记为已接受的答案。它可以在未来帮助其他社区成员解决类似的问题。感谢您的理解。
猜你喜欢
  • 2017-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-19
  • 2017-01-19
  • 2016-12-10
  • 2015-09-27
  • 1970-01-01
相关资源
最近更新 更多