我正在使用 Twitter 的嵌入式推文 API。 如果我从页面加载中获得 html markdown,一切都会很好。 如果我使用稍后添加内容的选项并按 ID 加载推文,它也非常有效:
twttr.widgets.load(
document.getElementById("container")
);
这位于此处的文档中:https://dev.twitter.com/web/javascript/initialization#init
但是如果我尝试使用以下类名加载推文:
twttr.widgets.load(
document.getElementsByClassName("containers")
);
我在 Twitter 的 widget.js 中遇到此错误:
Uncaught TypeError: t.querySelectorAll is not a function
如果我将元素组记录到控制台,我就有了一个正确的组:
我是否做错了什么,或者这是 Twitter 小部件上的错误?
谢谢!
编辑:
自 2015 年 7 月 28 日起,由于我在 Twitter 开发论坛上发表的另一篇文章,getElementsByClassName
示例已从 Twitter 文档中删除
最佳答案
问题可能来自于 document.getElementsByClassName
返回 NodeList
类型不是真正的 javascript Array
对象。另一方面,widgets.load
需要单个元素或元素的Array
。这导致 nodeList 被视为单个元素,并且库尝试对其调用 querySelectorAll
,这对于 NodeList
类型不可用。
一个解决方案是在将该 nodeList 传递给 widgets.load 时将其转换为真正的数组。
一种方法:
twttr.widgets.load(
Array.prototype.slice.call(document.getElementsByClassName("containers"))
);
这是可行的,因为 NodeList 有一个 length
属性并且是可索引的。
关于javascript - 初始化嵌入式推文时,未捕获类型错误 : t. querySelectorAll 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31458774/