【问题标题】:the object doesn't support this property or method "from" Javascript not working with IE 11该对象不支持此属性或方法“来自”Javascript 不适用于 IE 11
【发布时间】:2017-03-07 16:14:35
【问题描述】:

我正在尝试在电子邮件列表前添加“sip:”

这是我的代码:

// Adds sip: to skype emails to use Skype Entreprise
var elems = document.getElementsByClassName('skypemail');

Array.from(elems).forEach(function(v) {
    var elemVal = v.getAttribute('href');
    v.setAttribute('href', 'sip:' + elemVal);
});

到我的链接:

<a id="skypemail" href="username@website.com">test</a>
<a id="skypemail" href="username1@website.com">test</a>
<a id="skypemail" href="username2@website.com">test</a>
<a id="skypemail" href="username@website.com">test</a>

它适用于所有导航器,但不适用于 IE 11

当我使用调试栏时,我得到了:

the object doesn't support this property or method "from"

【问题讨论】:

  • 错误告诉你问题。 IE不支持Array.from()developer.mozilla.org/nl/docs/Web/JavaScript/Reference/…
  • 谢谢@Shilly,你知道我应该用什么来代替它吗?
  • @usethe23 the polyfill from the linked page 怎么样?
  • @Bergi 谢谢你,这也是我发现的,它有效!感谢您的帮助
  • @Bergi 现在我也很感兴趣。除了能够编写[].from() 并因此使代码更适合未来的标准之外,使用 polyfill 优于 slice 方法是否有优势?更新:我发现 IE8 不喜欢 [].slice.call()

标签: javascript


【解决方案1】:

您可以使用旧的切片技巧从类似数组的对象中获取数组,例如您拥有的实时 nodeList:

var elems = document.getElementsByClassName('skypemail');
var elemsAry = Array.prototype.slice.call(elems);

Array.slice 总是创建一个新数组,并且通过在类数组中的每个元素上调用它,这些元素会自动“映射”(不是正确的术语,只是比较)到真实数组的相同“索引” .

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-02-24
  • 1970-01-01
  • 2019-01-28
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 2019-07-05
相关资源
最近更新 更多