Ja, damit hatte ich's dann auch gelöst:
getModalContent() {
return new Promise((resolve, reject) => {
if (this.modalContentUrl) {
const [contentUrl, contentSelector] = this.modalContentUrl.split(/\s/);
addClass(this.elements.self, this.modalContentLoadingClass);
const ajax = new XMLHttpRequest();
ajax.open('GET', contentUrl, true);
ajax.send();
ajax.onload = () => {
if (ajax.status === 200) {
if (contentSelector) {
const contentElement = new DOMParser()
.parseFromString(ajax.responseText, 'text/html')
.querySelector(contentSelector);
this.elements.body.innerHTML = '';
this.elements.body.appendChild(contentElement);
this.contentElement = contentElement;
} else {
this.elements.section.innerHTML = ajax.responseText;
}
// history.pushState({ url: contentUrl }, null, contentUrl);
resolve(ajax.status);
} else {
reject(ajax.status);
}
};
ajax.ontimeout = () => {
reject(ajax.timeout);
};
} else {
resolve(true);
}
});
}