代码之家  ›  专栏  ›  技术社区  ›  3142 maple

TypeError:对未实现接口ServiceWorkerContainer的对象调用了“准备就绪”。展开navigator时。serviceWorker对象

  •  1
  • 3142 maple  · 技术社区  · 6 年前

    firefox version: 58.0

    类型 navigator.serviceWorker 在firefox控制台中,单击 ServiceWorkerContainer 来扩展它。

    并获取错误: TypeError: 'get ready' called on an object that does not implement interface ServiceWorkerContainer.

    这是什么意思?这是firefox的bug吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   T.J. Crowder    6 年前

    可能不是bug,但很有趣。

    当devtools试图扩展它时,除了访问 navigator.serviceWorker ,它试图访问其原型的属性(显示在特定于浏览器的devtools中 __proto__ 属性名称)。显然,在这样做的时候 this 它给的不是 导航器。服务人员 (我猜是原型对象本身,例如。 Object.getPrototypeOf(navigator.serviceWorker) ),以及 ready 原型上的getter期望在继承对象(粗略地说是“实例”)上调用,而不是原型本身。

    如果在Firefox控制台中执行此操作,则会出现相同的错误:

    Object.getPrototypeOf(navigator.serviceWorker).ready
    

    没什么好担心的。:-)