mirror of
https://github.com/rabbibotton/clog.git
synced 2025-12-06 10:40:45 -08:00
Added visiblity state changes for document
This commit is contained in:
parent
ed9e5519f6
commit
772a236266
3 changed files with 54 additions and 4 deletions
|
|
@ -141,11 +141,28 @@ clog-document object. (Private)"))
|
||||||
;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
(defgeneric ready-state (clog-document)
|
(defgeneric ready-state (clog-document)
|
||||||
(:documentation "Get ready-state."))
|
(:documentation "Get ready-state. Returns 'loading'|'interactive'|'complete'.
|
||||||
|
The state would only change if the boot-page was still loading css, graphics, etc.
|
||||||
|
Under normal circumstance there is no need in CLOG to check if the state is ready
|
||||||
|
as on-new-window is only called once one can interact with page. See also
|
||||||
|
SET-ON-READY-STATE-CHANGE"))
|
||||||
|
|
||||||
(defmethod ready-state ((obj clog-document))
|
(defmethod ready-state ((obj clog-document))
|
||||||
(query obj "readyState"))
|
(query obj "readyState"))
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;; visibility-state ;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
(defgeneric visibility-state (clog-document)
|
||||||
|
(:documentation "Get visibility-state. Returns the string 'visible' if
|
||||||
|
browser is in non-minmized state and is partialy visible and 'hidden' is
|
||||||
|
browser is minimized or no part of page is visible including an OS screen
|
||||||
|
lock."))
|
||||||
|
|
||||||
|
(defmethod visibility-state ((obj clog-document))
|
||||||
|
(query obj "visibilityState"))
|
||||||
|
|
||||||
;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;
|
||||||
;; load-css ;;
|
;; load-css ;;
|
||||||
;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;
|
||||||
|
|
@ -286,3 +303,30 @@ If ON-FULL-SCREEN-CHANGE-HANDLER is nil unbind the event."))
|
||||||
|
|
||||||
(defmethod set-on-full-screen-change ((obj clog-document) handler)
|
(defmethod set-on-full-screen-change ((obj clog-document) handler)
|
||||||
(set-on-event obj "fullscreenchange" handler))
|
(set-on-event obj "fullscreenchange" handler))
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;; set-on-visibility-change ;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
(defgeneric set-on-visibility-change (clog-document
|
||||||
|
on-visibility-change-handler)
|
||||||
|
(:documentation "Set the ON-VISIBILITY-CHANGE-HANDLER for CLOG-OBJ.
|
||||||
|
If ON-VISIBILITY-CHANGE-HANDLER is nil unbind the event. This event
|
||||||
|
is fired when the page visibility has changed such as a tab being
|
||||||
|
switch of browser minimized. Use the VISIBILITY-STATE property to
|
||||||
|
identify chage."))
|
||||||
|
|
||||||
|
(defmethod set-on-visibility-change ((obj clog-document) handler)
|
||||||
|
(set-on-event obj "visibilitychange" handler))
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;; set-on-ready-state-change ;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
(defgeneric set-on-ready-state-change (clog-document
|
||||||
|
on-ready-state-change-handler)
|
||||||
|
(:documentation "Set the ON-READY-STATE-CHANGE-HANDLER for CLOG-OBJ.
|
||||||
|
If ON-READY-STATE-CHANGE-HANDLER is nil unbind the event."))
|
||||||
|
|
||||||
|
(defmethod set-on-ready-state-change ((obj clog-document) handler)
|
||||||
|
(set-on-event obj "readystatechange" handler))
|
||||||
|
|
|
||||||
|
|
@ -92,12 +92,15 @@
|
||||||
;; clog-repl ;;
|
;; clog-repl ;;
|
||||||
;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
(defun clog-repl (&key (clog-gui-initialize t) (clog-web-initialize t))
|
(defun clog-repl (&key (clog-gui-initialize t)
|
||||||
|
(clog-web-initialize t)
|
||||||
|
(boot-file "/debug.html")
|
||||||
|
(port 8080))
|
||||||
"Set a path /repl that opens a blank page and sets the global
|
"Set a path /repl that opens a blank page and sets the global
|
||||||
clog-user:*body* to last window openned to /repl. Debug mode is
|
clog-user:*body* to last window openned to /repl. Debug mode is
|
||||||
set (logging to browser console), "
|
set (logging to browser console) in the default debug.html boot-file."
|
||||||
(unless *clog-running*
|
(unless *clog-running*
|
||||||
(initialize nil :boot-file "/debug.html"))
|
(initialize nil :boot-file boot-file :port port))
|
||||||
(set-on-new-window (lambda (body)
|
(set-on-new-window (lambda (body)
|
||||||
(clog-connection:debug-mode (connection-id body))
|
(clog-connection:debug-mode (connection-id body))
|
||||||
(when clog-web-initialize
|
(when clog-web-initialize
|
||||||
|
|
|
||||||
|
|
@ -1010,6 +1010,7 @@ embedded in a native template application.)"
|
||||||
(head-element generic-function)
|
(head-element generic-function)
|
||||||
(body-element generic-function)
|
(body-element generic-function)
|
||||||
(document-element generic-function)
|
(document-element generic-function)
|
||||||
|
(visibility-state generic-function)
|
||||||
(ready-state generic-function)
|
(ready-state generic-function)
|
||||||
(load-css generic-function)
|
(load-css generic-function)
|
||||||
(load-script generic-function)
|
(load-script generic-function)
|
||||||
|
|
@ -1020,6 +1021,8 @@ embedded in a native template application.)"
|
||||||
|
|
||||||
"CLOG-Document - Events"
|
"CLOG-Document - Events"
|
||||||
(set-on-full-screen-change generic-function)
|
(set-on-full-screen-change generic-function)
|
||||||
|
(set-on-visibility-change generic-function)
|
||||||
|
(set-on-ready-state-change generic-function)
|
||||||
(set-on-load-script generic-function))
|
(set-on-load-script generic-function))
|
||||||
|
|
||||||
(defsection @clog-navigator (:title "CLOG Navigator Objects")
|
(defsection @clog-navigator (:title "CLOG Navigator Objects")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue