<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
</style>
</head>
<body>
<div id="html">
</div>
<div id="loading"></div>
</body>
<script>
var getFileFromUrl = function (url, fileName) {
return new Promise((resolve, reject) => {
var blob = null;
var xhr = new XMLHttpRequest();
xhr.open("GET", url);
xhr.setRequestHeader('Accept', 'text/html');
xhr.responseType = "blob";
xhr.onload = () => {
blob = xhr.response;
let file = new File([blob], fileName, { type: 'image/html' });
resolve(file);
};
xhr.onerror = (e) => {
reject(e)
};
// 发送
xhr.send();
});
};
let file = window.location.href.split('file=')?.[1]
let fileObj = null
// document.getElementById('iframe-html').src = file
getFileFromUrl(file, 'html文件')
.then((response) => {
fileObj = response
var reader = new FileReader();
reader.onload = (function (theFile) {
return function (e) {
if (e.target?.result) {
const txtString = e.target.result
const patrn = /[\uFE30-\uFFA0]/gi;//检测中文
// 检测当前文本是否含有中文(如果没有,则当乱码处理)
if (!patrn.exec(txtString)) { //没有中文,即文件乱码了或者都是英文. // 两个格式的英文编码一样,所以纯英文文件也当成乱码再处理一次
let reader_gb2312 = new FileReader()
// 再拿一次纯文本,这一次拿到的文本一定不会乱码
reader_gb2312.readAsText(fileObj, 'gb2312')
reader_gb2312.onload = e2 => {
document.getElementById('html').innerHTML = e2.target.result
}
} else {
document.getElementById('html').innerHTML = txtString
}
var loading = document.getElementById("loading");
setTimeout(() => {
var aAr = document.querySelectorAll("a[name*='table']");
var tabAr = document.querySelectorAll("table")
aAr.forEach((element, ind) => {
// debugger
element.style.width = tabAr?.[ind]?.offsetWidth + 'px'
})
loading.style.display = 'none';
}, 500);
}
};
})(fileObj);
reader.readAsText(fileObj, 'utf-8')
})
.catch((e) => {
console.error(e)
});
</script>
</html>