當推送通知服務器希望客戶端重新訂閱時,瀏覽器觸發pushsubscriptionchange
事件。我如何手動觸發此事件進行測試?如何測試pushsubscriptionchange事件處理代碼?
4
A
回答
3
不幸的是,不可能對此功能進行任何端到端測試。你能做的最好的是從服務人員解僱通過JS事件:
function triggerSubscriptionChange() {
registration.pushManager.getSubscription().then(subscription => {
if (subscription) {
console.log("subscribed, subscription", subscription);
return subscription.unsubscribe();
}
}).then(() => {
console.log("unsubscribed");
return registration.pushManager.subscribe({
userVisibleOnly: true
});
}).then(subscription => {
console.log("subscribed, subscription", subscription);
self.dispatchEvent(new ExtendableEvent("pushsubscriptionchange"));
});
}
2
事件當用戶刪除並重新授予推權限(請參見https://github.com/w3c/push-api/issues/116)也被觸發。例如,在Firefox中,您可以單擊站點身份圖標,在「權限」部分中,選擇「阻止」作爲「接收通知」,然後選擇「允許」。
A pushsubscriptionchange
事件將被觸發。
相關問題
- 1. 我應該如何處理pushsubscriptionchange事件?
- 2. 如何測試處理ImportErrors的代碼?
- 3. 單元測試事件處理程序的代碼
- 4. 如何測試事件是否包含事件處理程序?
- 5. 單元測試在事件處理
- 6. 單元測試事件處理程序
- 7. 的Xcode:爲條件調試/測試代碼預處理宏
- 8. 測試事務代碼
- 9. SelectedIndexChange事件處理程序代碼
- 10. Numericupdownextender事件處理程序的代碼
- 11. 如何在ViewModel中單元測試OnPropertyChanged事件處理程序
- 12. 如何測試RowChanging事件處理程序中的DataTable更新
- 13. 如何測試事件處理程序使用酶
- 14. 試圖瞭解在JS事件處理程序代碼
- 15. 調試預處理代碼
- 16. 如何在Vert.x中測試事件處理程序(來自事件總線)?
- 17. 如何編寫我的代碼來測試websocket事件?
- 18. JavaFX事件處理之謎 - 代碼已被刪除且事件仍處理?
- 19. 如何測試SNMP4J代理
- 20. 如何在處理所有其他事件後運行代碼
- 21. 編譯器如何生成事件處理程序代碼?
- 22. 如何在代碼中爲DataTemplate分配事件處理程序?
- 23. 如何重構重複的事件處理代碼
- 24. 如何通過JS代碼wireup JS事件處理
- 25. 如何測試的代碼
- 26. 如何測試此代碼
- 27. 如何測試build.sbt代碼?
- 28. 如何測試java代碼?
- 29. 如何處理代碼?
- 30. AngularJS:如何在測試中調用事件處理程序並檢測綁定
嘗試這樣的事件沒有觸發...我也看到https://github.com/w3c/push-api/issues/116開放 –
它用來工作,因爲你可以從我的截圖中查看。從那以後我不知道它是否停止了工作。您也可以嘗試從允許在「首選項」 - >「內容」中發送通知的網站列表中刪除該網站。 – Marco
[最新評論](https://github.com/w3c/push-api/issues/116#issuecomment-280743159)在這個問題上說_it現在定義了用戶代理可以在權限被撤銷時觸發pushsubscriptionchange事件_ –