From 61d8f18894e7828746168394c01933680e684d30 Mon Sep 17 00:00:00 2001 From: carson Date: Tue, 28 Apr 2020 18:54:10 -0700 Subject: [PATCH] support polling --- src/htmx.js | 22 +++++++++++++++++++++- test/scratch.html | 26 ++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 test/scratch.html diff --git a/src/htmx.js b/src/htmx.js index 02a390e2..860d3d4c 100644 --- a/src/htmx.js +++ b/src/htmx.js @@ -252,7 +252,7 @@ var HTMx = HTMx || (function () { } } -// DOM element processing + // DOM element processing function processClassList(elt, classList, operation) { var values = classList.split(","); for (var i = 0; i < values.length; i++) { @@ -271,11 +271,31 @@ var HTMx = HTMx || (function () { } } + function processPolling(elt, action) { + var trigger = getTrigger(elt); + if (trigger.trim().indexOf("every ") === 0) { + var args = trigger.split(/\s+/); + var intervalStr = args[1]; + if (intervalStr) { + var interval = parseInterval(intervalStr); + // TODO store for cancelling + var timeout = setTimeout(function () { + if (document.body.contains(elt)) { + issueAjaxRequest(elt, getAttributeValue(elt, action)); + processPolling(elt, action); + } + }, interval); + } + } + } + function processElement(elt) { if (getAttributeValue(elt, 'hx-get')) { var trigger = getTrigger(elt); if (trigger === 'load') { issueAjaxRequest(elt, getAttributeValue(elt, 'hx-get')); + } else if (trigger.trim().indexOf('every ') === 0) { + processPolling(elt, 'hx-get'); } else { elt.addEventListener(trigger, function (evt) { issueAjaxRequest(elt, getAttributeValue(elt, 'hx-get')); diff --git a/test/scratch.html b/test/scratch.html new file mode 100644 index 00000000..74ce035c --- /dev/null +++ b/test/scratch.html @@ -0,0 +1,26 @@ + + + + Scratch File + + + + + + + + + +Work Area +
+
+ +
+ +