在页面的 domready 事件中,我正在为一个按钮设置一个事件侦听器,该按钮在我的网站上的页面中设置后台同步事件(离线时),但即使服务工作者已经在之前的页面访问中加载,这行代码永远不会解决承诺,它的状态会无限期地保持“待处理”。
navigator.serviceWorker.ready.then(function (sw) {
$('#elt').on('click', function () {
sw.sync.register('contact-form-submission');
由于我知道在表单完成之前不需要设置同步事件,所以我尝试将此代码包装在 3 秒的 setTimeout() 中,这很有效!我的问题是为什么会这样,我找不到其他人表明 .ready 事件在页面首次加载时不可用。洞察力赞赏。