소스 검색

JavaScript: new event to detect context loaded (#7452)

* Add JavaScript event: freshrss:globalContextLoaded

* Update docs

* Update docs: fix typo
hkcomori 1 년 전
부모
커밋
9e8c306b3e
2개의 변경된 파일21개의 추가작업 그리고 0개의 파일을 삭제
  1. 18 0
      docs/en/developers/03_Backend/05_Extensions.md
  2. 3 0
      p/scripts/main.js

+ 18 - 0
docs/en/developers/03_Backend/05_Extensions.md

@@ -183,6 +183,24 @@ The following events are available:
 
 > ℹ️ Note: the `simplepie_*` hooks are only fired for feeds using SimplePie via pull, i.e. normal RSS/Atom feeds. This excludes WebSub (push), and the various HTML or JSON Web scraping methods.
 
+### JavaScript events
+
+```javascript
+function use_context() {
+	// Something that refers to the window.context
+}
+
+if (document.readyState && document.readyState !== 'loading' && typeof window.context !== 'undefined' && typeof window.context.extensions !== 'undefined') {
+	use_context();
+} else {
+	document.addEventListener('freshrss:globalContextLoaded', use_context, false);
+}
+```
+
+The following events are available:
+
+* `freshrss:globalContextLoaded`: will be dispatched after load the global `context` variable, useful for referencing variables injected with the `js_vars` hook.
+
 ### Injecting CDN content
 
 When using the `init` method, it is possible to inject scripts from CDN using the `Minz_View::appendScript` directive.

+ 3 - 0
p/scripts/main.js

@@ -53,6 +53,9 @@ var context;
 	context.icons.unread = decodeURIComponent(context.icons.unread);
 	context.extensions = json.extensions;
 }());
+
+const freshrssGlobalContextLoadedEvent = new Event('freshrss:globalContextLoaded');
+document.dispatchEvent(freshrssGlobalContextLoadedEvent);
 // </Global context>
 
 function badAjax(reload) {