You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

92 lines
2.3 KiB

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>嵌入式加载示例</title>
<style>
html, body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
}
.url {
position: fixed;
display: block;
left: 10px;
top: 10px;
}
.url input {
width: 500px;
}
iframe {
border: 0;
padding: 0;
margin: 0;
min-height: 100vh;
width: 100%;
}
</style>
</head>
<body>
<div class="url">
<select value="./word.docx" onchange="context.url = this.value" placeholder="请输入测试url">
<option value="./word.docx">测试word文档</option>
<option value="./excel.xlsx">测试Excel文档</option>
<option value="./ppt.pptx">测试PPT文档</option>
<option value="./pic.png">测试PNG图片</option>
<option value="./pdf.pdf">测试PDF文档</option>
<option value="./video.mp4">测试视频</option>
</select>
<button onclick="loadFromUrl()">预览</button>
</div>
<script>
var context = {
// 查看器的源,当前示例为在线,本地测试请改为 http://localhost:8900
origin: 'http://viewer.flyfish.group',
// 目标frame
frame: null,
// 文件url
url: './word.docx'
};
function appendFrame(src) {
if (context.frame) {
document.body.removeChild(context.frame);
}
// 构建frame
var frame = context.frame = document.createElement('iframe');
frame.src = src;
frame.style = ''
return document.body.appendChild(frame)
}
function loadFromUrl() {
// 要预览的文件地址
var url = context.url;
// 取得文件名
var filename = url.substr(url.lastIndexOf('/') + 1);
// 拼接iframe请求url
var src = context.origin + '?name=' + encodeURIComponent(filename) + '&from=' + encodeURIComponent(location.origin);
// 拼接frame
var frame = appendFrame(src);
// 绑定事件
frame.onload = () => {
fetch(url, { mode: "no-cors" }).then(function (res) {
return res.blob();
}).then(function (data) {
if (!data) {
console.error('文件下载失败');
}
console.log(data)
frame.contentWindow.postMessage(data, context.origin);
})
}
}
loadFromUrl();
</script>
</body>
</html>