use title node innerHTML if possible so that HTML escape sequences are respected.
This commit is contained in:
carson 2020-11-18 17:23:52 -07:00
parent 81c78109a3
commit 13366ac089
2 changed files with 20 additions and 3 deletions

View File

@ -267,7 +267,7 @@ return (function () {
if (selector) {
return eltOrSelector.querySelector(selector);
} else {
return getDocument().body.querySelector(eltOrSelector);
return find(getDocument(), eltOrSelector);
}
}
@ -275,7 +275,7 @@ return (function () {
if (selector) {
return eltOrSelector.querySelectorAll(selector);
} else {
return getDocument().body.querySelectorAll(eltOrSelector);
return findAll(getDocument(), eltOrSelector);
}
}
@ -623,7 +623,12 @@ return (function () {
function selectAndSwap(swapStyle, target, elt, responseText, settleInfo) {
var title = findTitle(responseText);
if(title) {
window.document.title = title;
var titleElt = find("title");
if(titleElt) {
titleElt.innerHTML = title;
} else {
window.document.title = title;
}
}
var fragment = makeFragment(responseText);
if (fragment) {

View File

@ -773,5 +773,17 @@ describe("Core htmx AJAX Tests", function(){
window.document.title.should.equal("htmx rocks!");
});
it('title update does not URL escapte', function()
{
this.server.respondWith("GET", "/test", function (xhr) {
xhr.respond(200, {}, "<title>&lt;/> htmx rocks!</title>Clicked!");
});
var btn = make('<button hx-get="/test">Click Me!</button>')
btn.click();
this.server.respond();
btn.innerText.should.equal("Clicked!");
window.document.title.should.equal("</> htmx rocks!");
});
})