diff options
author | carson <carson@leaddyno.com> | 2020-09-18 12:13:16 -0600 |
---|---|---|
committer | carson <carson@leaddyno.com> | 2020-09-18 12:13:16 -0600 |
commit | f39fccf28cb15153c403237b2aa2bb10cd8f28f5 (patch) | |
tree | edcf09d65718ce3ecad27d628086a2034ba42365 | |
parent | 7d49d5ab583bda3005034b817da97a95d234afb3 (diff) | |
download | htmx-f39fccf28cb15153c403237b2aa2bb10cd8f28f5.tar.gz htmx-f39fccf28cb15153c403237b2aa2bb10cd8f28f5.zip |
case insensitive test for presence of headers because chrome uses lower case in the string
-rw-r--r-- | src/htmx.js | 10 | ||||
-rw-r--r-- | test/core/headers.js | 55 |
2 files changed, 38 insertions, 27 deletions
diff --git a/src/htmx.js b/src/htmx.js index 3f7d3a9a..2f837cef 100644 --- a/src/htmx.js +++ b/src/htmx.js @@ -1654,15 +1654,13 @@ return (function () { try { if (!triggerEvent(elt, 'htmx:beforeOnLoad', eventDetail)) return; - //AK - FIXED CHROME issue - "refuse to get unsafe header" warning. - if (xhr.getAllResponseHeaders().indexOf("HX-Trigger") >= 0) { + if (xhr.getAllResponseHeaders().search(/HX-Trigger/i) >= 0) { handleTrigger(elt, this.getResponseHeader("HX-Trigger")); - } + } - if (xhr.getAllResponseHeaders().indexOf("HX-Push") >= 0) { + if (xhr.getAllResponseHeaders().search(/HX-Push/i) >= 0) { var pushedUrl = this.getResponseHeader("HX-Push"); - } - //AK - FIXED CHROME issue - "refuse to get unsafe header" warning. \\ + } var shouldSaveHistory = shouldPush(elt) || pushedUrl; diff --git a/test/core/headers.js b/test/core/headers.js index 8271bc56..aaefb967 100644 --- a/test/core/headers.js +++ b/test/core/headers.js @@ -1,4 +1,4 @@ -describe("Core htmx AJAX headers", function() { +describe("Core htmx AJAX headers", function () { beforeEach(function () { this.server = makeServer(); clearWorkArea(); @@ -8,8 +8,8 @@ describe("Core htmx AJAX headers", function() { clearWorkArea(); }); - it("should include the HX-Request header", function(){ - this.server.respondWith("GET", "/test", function(xhr){ + it("should include the HX-Request header", function () { + this.server.respondWith("GET", "/test", function (xhr) { xhr.requestHeaders['HX-Request'].should.be.equal('true'); xhr.respond(200, {}, ""); }); @@ -18,8 +18,8 @@ describe("Core htmx AJAX headers", function() { this.server.respond(); }) - it("should include the HX-Trigger header", function(){ - this.server.respondWith("GET", "/test", function(xhr){ + it("should include the HX-Trigger header", function () { + this.server.respondWith("GET", "/test", function (xhr) { xhr.requestHeaders['HX-Trigger'].should.equal('d1'); xhr.respond(200, {}, ""); }); @@ -28,8 +28,8 @@ describe("Core htmx AJAX headers", function() { this.server.respond(); }) - it("should include the HX-Trigger-Name header", function(){ - this.server.respondWith("GET", "/test", function(xhr){ + it("should include the HX-Trigger-Name header", function () { + this.server.respondWith("GET", "/test", function (xhr) { xhr.requestHeaders['HX-Trigger-Name'].should.equal('n1'); xhr.respond(200, {}, ""); }); @@ -38,8 +38,8 @@ describe("Core htmx AJAX headers", function() { this.server.respond(); }) - it("should include the HX-Target header", function(){ - this.server.respondWith("GET", "/test", function(xhr){ + it("should include the HX-Target header", function () { + this.server.respondWith("GET", "/test", function (xhr) { xhr.requestHeaders['HX-Target'].should.equal('d1'); xhr.respond(200, {}, ""); }); @@ -48,8 +48,8 @@ describe("Core htmx AJAX headers", function() { this.server.respond(); }) - it("should handle simple string HX-Trigger response header properly", function(){ - this.server.respondWith("GET", "/test", [200, {"HX-Trigger" : "foo"}, ""]); + it("should handle simple string HX-Trigger response header properly", function () { + this.server.respondWith("GET", "/test", [200, {"HX-Trigger": "foo"}, ""]); var div = make('<div hx-get="/test"></div>'); var invokedEvent = false; @@ -61,8 +61,21 @@ describe("Core htmx AJAX headers", function() { invokedEvent.should.equal(true); }) - it("should handle a namespaced HX-Trigger response header properly", function(){ - this.server.respondWith("GET", "/test", [200, {"HX-Trigger" : "namespace:foo"}, ""]); + it("should handle simple string HX-Trigger response header in different case properly", function () { + this.server.respondWith("GET", "/test", [200, {"hx-trigger": "foo"}, ""]); + + var div = make('<div hx-get="/test"></div>'); + var invokedEvent = false; + div.addEventListener("foo", function (evt) { + invokedEvent = true; + }); + div.click(); + this.server.respond(); + invokedEvent.should.equal(true); + }) + + it("should handle a namespaced HX-Trigger response header properly", function () { + this.server.respondWith("GET", "/test", [200, {"HX-Trigger": "namespace:foo"}, ""]); var div = make('<div hx-get="/test"></div>'); var invokedEvent = false; @@ -74,8 +87,8 @@ describe("Core htmx AJAX headers", function() { invokedEvent.should.equal(true); }) - it("should handle basic JSON HX-Trigger response header properly", function(){ - this.server.respondWith("GET", "/test", [200, {"HX-Trigger" : "{\"foo\":null}"}, ""]); + it("should handle basic JSON HX-Trigger response header properly", function () { + this.server.respondWith("GET", "/test", [200, {"HX-Trigger": "{\"foo\":null}"}, ""]); var div = make('<div hx-get="/test"></div>'); var invokedEvent = false; @@ -89,8 +102,8 @@ describe("Core htmx AJAX headers", function() { invokedEvent.should.equal(true); }) - it("should handle JSON with array arg HX-Trigger response header properly", function(){ - this.server.respondWith("GET", "/test", [200, {"HX-Trigger" : "{\"foo\":[1, 2, 3]}"}, ""]); + it("should handle JSON with array arg HX-Trigger response header properly", function () { + this.server.respondWith("GET", "/test", [200, {"HX-Trigger": "{\"foo\":[1, 2, 3]}"}, ""]); var div = make('<div hx-get="/test"></div>'); var invokedEvent = false; @@ -104,8 +117,8 @@ describe("Core htmx AJAX headers", function() { invokedEvent.should.equal(true); }) - it("should handle JSON with array arg HX-Trigger response header properly", function(){ - this.server.respondWith("GET", "/test", [200, {"HX-Trigger" : "{\"foo\":{\"a\":1, \"b\":2}}"}, ""]); + it("should handle JSON with array arg HX-Trigger response header properly", function () { + this.server.respondWith("GET", "/test", [200, {"HX-Trigger": "{\"foo\":{\"a\":1, \"b\":2}}"}, ""]); var div = make('<div hx-get="/test"></div>'); var invokedEvent = false; @@ -120,8 +133,8 @@ describe("Core htmx AJAX headers", function() { invokedEvent.should.equal(true); }) - it("should survive malformed JSON in HX-Trigger response header", function(){ - this.server.respondWith("GET", "/test", [200, {"HX-Trigger" : "{not: valid}"}, ""]); + it("should survive malformed JSON in HX-Trigger response header", function () { + this.server.respondWith("GET", "/test", [200, {"HX-Trigger": "{not: valid}"}, ""]); var div = make('<div hx-get="/test"></div>'); div.click(); |