WebComponentsReady 在 Safari 中过早触发?

WebComponentsReady fires too soon in safari?

所以我正在研究聚合物 desktop/mobile webapp。我有一个 WebComponentsReady 侦听器附加到全局 window 对象,以确保聚合物 html 元素(以及它们所依赖的 polyfill)将在那里并在我的应用程序逻辑启动时准备就绪。在 Firefox 中运行良好(当然 chrome)。这将我们带到 safari/mobile 野生动物园。

在 safari 中,事件似乎在 polymer 完成它的工作之前就触发了。添加几秒钟的 setTimeout 包装器(> 2 似乎是最低限度的)并且一切正常。 this question 的答案似乎已过时:链接已损坏,'polymer-ready' 事件似乎不再触发。

那么我如何确保所有浏览器都支持 polymer

1) webcomponents 已准备就绪(原生或 polyfilled)
2) 所有的聚合物元件都已完成构建并准备就绪 附加事件侦听器?

setTimeout 太不确定了,我想要一个更简洁的解决方案。

使用 Polymer 1.0 中的 dom-change 事件代替 'polymer-ready'。

index.html

<body unresolved fullbleed layout vertical>
<template is="dom-bind" id="app">

app.js

var app = document.querySelector('#app');
app.addEventListener('dom-change', function() {
    console.log("Polymer is ready!");
    // do your thing
});