這可能是一個加載本地文件的錯誤。 我設法創建一個解決辦法,但你還是會得到一個錯誤的控制檯,您不能使用原產地問題內到期的其他import語句我想:
window.addEventListener('load', function() {
function appendModule(code) {
let url = URL.createObjectURL(new Blob([code], { type: 'text/javascript' })); // create url from code
let script = document.createElement('script');
script.type = 'module';
script.src = url;
document.head.appendChild(script);
}
let scripts = document.querySelectorAll('script');
console.log(scripts);
for (let script of scripts) {
script.parentElement.removeChild(script);
if (script.getAttribute('type') !== 'module') continue; // found normal script
if (script.getAttribute('src') !== null) {
// load a file
var request = new XMLHttpRequest();
request.open('GET', script.getAttribute('src') + '?_=' + Date.now(), true);
request.onload = function() {
if (this.status >= 200 && this.status < 400) {
// file loaded
appendModule(this.response);
} else {
// error loading file
console.error('Not able to load module:', script.getAttribute('src'));
}
};
request.onerror = function() {
// error loading file
console.error('Not able to load module:', script.getAttribute('src'));
};
request.send();
}
}
});
<script src="./script.js" type="module"></script>
在簡而言之:您加載腳本內容,使用正確的類型創建Blob
,並從ObjectURL
加載它。
這是在Mac上。該文件是從擴展內部本地加載的。該URL類似於chrome://extensionid/test/test.html – Josh
我認爲它最終會成爲chrome擴展的問題,它們可能需要關閉對本地資源的mime類型檢查,並假定默認的MIME類型爲腳本資源與一個有效的js之一。說我會想,現在還很早。 – MinusFour
尚未支持,請訪問https://crbug.com/738739 – wOxxOm