summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorcarson <carson@leaddyno.com>2020-09-18 12:13:16 -0600
committercarson <carson@leaddyno.com>2020-09-18 12:13:16 -0600
commitf39fccf28cb15153c403237b2aa2bb10cd8f28f5 (patch)
treeedcf09d65718ce3ecad27d628086a2034ba42365
parent7d49d5ab583bda3005034b817da97a95d234afb3 (diff)
downloadhtmx-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.js10
-rw-r--r--test/core/headers.js55
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();