Simple Wait For Document Helper

A Simple helper library for wait document load

目前为 2018-10-22 提交的版本。查看 最新版本

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.cn-greasyfork.org/scripts/373524/639009/Simple%20Wait%20For%20Document%20Helper.js

  1. /**
  2. * Simple Wait For Document Helper
  3. * by Jixun<https://jixun.moe/>
  4. */
  5. var waitForDocument = (function () {
  6. var callbackQueue = []
  7. var ready = false
  8.  
  9. function waitForDocument(callback) {
  10. if (ready) {
  11. requestAnimationFrame(callback)
  12. return
  13. }
  14.  
  15. callbackQueue.push(callback)
  16. }
  17.  
  18. function triggerCallbackQueue() {
  19. if (ready === true) {
  20. // Already processed
  21. return
  22. }
  23.  
  24. ready = true
  25.  
  26. // process callback queue
  27. callbackQueue.forEach(requestAnimationFrame)
  28. callbackQueue = null
  29.  
  30. // remove those listeners
  31. document.removeEventListener('DOMContentLoaded', triggerCallbackQueue)
  32. document.removeEventListener('load', triggerCallbackQueue)
  33. }
  34.  
  35. // listen for document loaded events
  36. document.addEventListener('DOMContentLoaded', triggerCallbackQueue)
  37. document.addEventListener('load', triggerCallbackQueue)
  38.  
  39. // check if document is ready yet
  40. if (['interactive', 'complete'].indexOf(document.readyState) !== -1) {
  41. triggerCallbackQueue()
  42. }
  43.  
  44. return waitForDocument
  45. })()