about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/html/dom.nim6
-rw-r--r--src/server/buffer.nim6
2 files changed, 10 insertions, 2 deletions
diff --git a/src/html/dom.nim b/src/html/dom.nim
index a5aec266..941d3ce7 100644
--- a/src/html/dom.nim
+++ b/src/html/dom.nim
@@ -87,6 +87,11 @@ type
     of RESULT_IMPORT_MAP_PARSE:
       discard #TODO
 
+type DocumentReadyState* = enum
+  READY_STATE_LOADING = "loading"
+  READY_STATE_INTERACTIVE = "interactive"
+  READY_STATE_COMPLETE = "complete"
+
 type
   Location = ref object
     window: Window
@@ -176,6 +181,7 @@ type
     isxml*: bool
     implementation {.jsget.}: DOMImplementation
     origin: Origin
+    readyState* {.jsget.}: DocumentReadyState
 
     scriptsToExecSoon*: seq[HTMLScriptElement]
     scriptsToExecInOrder*: Deque[HTMLScriptElement]
diff --git a/src/server/buffer.nim b/src/server/buffer.nim
index fa134d8f..82774fe7 100644
--- a/src/server/buffer.nim
+++ b/src/server/buffer.nim
@@ -1069,9 +1069,10 @@ proc finishLoad(buffer: Buffer): EmptyPromise =
     if buffer.window == nil:
       buffer.window = newWindow(buffer.config.scripting, buffer.selector,
         buffer.attrs)
-    let doc = parseHTML(buffer.sstream, charsets = buffer.charsets,
+    let document = parseHTML(buffer.sstream, charsets = buffer.charsets,
       window = buffer.window, url = buffer.url)
-    buffer.document = doc
+    buffer.document = document
+    document.readyState = READY_STATE_INTERACTIVE
     buffer.state = LOADING_RESOURCES
     buffer.dispatchDOMContentLoadedEvent()
     p = buffer.loadResources()
@@ -1136,6 +1137,7 @@ proc onload(buffer: Buffer) =
       res.atend = true
       buffer.finishLoad().then(proc() =
         buffer.state = LOADED
+        buffer.document.readyState = READY_STATE_COMPLETE
         buffer.dispatchLoadEvent()
         buffer.resolveTask(LOAD, res))
       return