该网站使用prototypejs覆盖了Magento上的Array.from()错误

adr*_*n54 5 magento prototypejs google-maps-api-3

Magento 1 使用prototypejs,该库覆盖了Array.form1.7版本中的第1081行:

Array.from = $A;
Run Code Online (Sandbox Code Playgroud)

这会导致控制台中出现以下 JavaScript 错误:

此站点使用不支持迭代的实现覆盖 Array.from(),这可能会导致 Google Maps JavaScript API v3 无法正常工作。

编辑这个核心库似乎不合理,Magento 开发人员如何处理这个冲突?

小智 7

我想我已经找到了解决方案。将行 array.from($A) 替换为:

function isIterable(obj) {
  // checks for null and undefined
  if (obj == null) {
    return false;
  }
  return typeof obj[Symbol.iterator] === 'function';
}
if (isIterable($A)) {
  Array.from = $A;
}
Run Code Online (Sandbox Code Playgroud)

  • 我在我维护的一家旧 M1 商店上实现了这一点,并且它似乎可以正常工作,没有任何副作用。 (2认同)