【发布时间】:2021-09-28 02:16:23
【问题描述】:
我正在尝试将此自定义元素添加到 YouTube。
一开始我是在控制台写的:
const script1 = document.createElement("script")
script1.type = "module"
script1.src = "https://unpkg.com/pose-viewer@0.0.4/dist/pose-viewer/pose-viewer.esm.js"
document.head.appendChild(script1)
然后:
document.createElement('pose-viewer')
但我收到了这个错误:
Uncaught TypeError: Class constructor a cannot be invoked without '新的' 在新 g (custom-elements-es5-adapter.js:11) 在:1:10
所以我编译成es5:
const script1 = document.createElement("script")
script1.src = "https://unpkg.com/pose-viewer@0.1.2/dist/pose-viewer/pose-viewer.js"
document.head.appendChild(script1)
但我收到了这个错误:
未捕获的类型错误:非法调用 在 n.f (pose-viewer.js:15) 在 Function.getOwnPropertyDescriptor (pose-viewer.js:15) 在pose-viewer.js:44 在pose-viewer.js:58 在pose-viewer.js:130
我做错了什么?为什么这不适用于 YouTube,但在其他任何地方都可以使用?
【问题讨论】:
-
我假设您尝试从
unpkg.com添加的脚本不是您编写的?您能否提供有关该脚本的更多信息? -
@Philipp 脚本是我写的。它是一个用 Stencil 编写的名为
pose-viewer的自定义元素(Web 组件)。 -
好吧,那么错误似乎在您自己的脚本中。您是否尝试上传非缩小版本并对其进行调试?
-
脚本在其他网站上运行得很好,就像 OP 说的那样,而不是在 YouTube 上。从进一步的调试来看,YouTube 似乎正在使用某种脚本
custom-elements-es5-adapter,它会弄乱正确的自定义元素, -
看起来像是 Polymer 中使用的 polyfill:polymer-library.polymer-project.org/2.0/docs/polyfills
标签: javascript youtube custom-element stenciljs