【问题标题】:TypeError: 'get ready' called on an object that does not implement interface ServiceWorkerContainer. on expanding navigator.serviceWorker objectTypeError:在未实现接口 ServiceWorkerContainer 的对象上调用了“准备就绪”。关于扩展 navigator.serviceWorker 对象
【发布时间】:2018-01-25 12:54:22
【问题描述】:
firefox version: 58.0
在firefox控制台输入navigator.serviceWorker,点击ServiceWorkerContainer展开。
然后得到一个错误:TypeError: 'get ready' called on an object that does not implement interface ServiceWorkerContainer.
这是什么意思?它是 Firefox 的错误吗?
【问题讨论】:
标签:
javascript
firefox
console
service-worker
firefox-developer-tools
【解决方案1】:
可能不是错误,但很有趣。
当 devtools 试图扩展它时,除了访问 navigator.serviceWorker 自己的属性之外,它还尝试访问其原型的属性(在 devtools 中显示为具有特定于浏览器的 __proto__ 属性名称)。显然,这样做时,它给出的this 不是navigator.serviceWorker(我猜它是原型对象本身,例如Object.getPrototypeOf(navigator.serviceWorker)),并且原型上的ready getter 的实现预计会被调用在继承对象(松散地,“实例”)上,而不是原型本身。
如果您在 Firefox 控制台中执行此操作,您会收到相同的错误:
Object.getPrototypeOf(navigator.serviceWorker).ready
没什么好担心的。 :-)