Я использую пользовательские веб-компоненты с shadow dom для загрузки файла html в элемент, я не могу найти способ загрузить его как файл html без задержки сценариев заголовков и ссылки стиля.
Другими словами, скрипты не загружаются, а внешние css файлы в теге заголовка задерживаются до тех пор, пока html не будет полностью загружен.
файл html выглядит так:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html lang="en">
<head>
<title>My Document</title>
<link href="/MyStyles.css" rel="stylesheet" type="text/css" />
<script src="/MyScripts.js" type="text/javascript"></script>
</head>
<body>
<!-- Other Main Tags -->
<script src="/AnotherScript.js" type="text/javascript"></script>
</body>
</html>
Javascript:
customElements.define('ui-include', class extends HTMLElement {
async connectedCallback() {
let ref = this.getAttribute('ref')
const shadow = this.attachShadow({ mode: 'open' })
shadow.innerHTML = 'Loading...';
fetch(`/documentviewer.aspx/GetContent`,
{
body: JSON.stringify({ reference: ref }),
method: "post",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
})
.then(r => r.json())
.then(r => {
// r.d is the response html string (html file example above)
shadow.innerHTML = r.d ;
})
.catch(e => {
console.error(e)
})
.then(() => {
console.log('done')
})
}
})
HTML:
<ui-include ref="Document_123"></ui-include>
После загрузки страницы при проверке ui-include
. тег заголовка больше не отображается. вроде бы его развернули, вот скриншот:
введите описание изображения здесь
Обратите внимание, что выбранный сценарий на изображении - /MyScripts.js
, а не /MyScripts
Как я могу рассматривать строку ответа html как фактический документ и загрузить его в веб-компонент?