|
@@ -1093,7 +1093,7 @@ const handleHomeworkSubmit = async () => {
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
- else {
|
|
|
+ else if (slides.value[slideIndex.value].elements.some((element: any) => element.isHTML)) {
|
|
|
// message.warning('当前页面暂不支持作业提交')
|
|
|
console.log('尝试截图当前页面并提交')
|
|
|
// return
|
|
@@ -1295,6 +1295,74 @@ const handleHomeworkSubmit = async () => {
|
|
|
message.error('截图提交失败')
|
|
|
}
|
|
|
}
|
|
|
+ else {
|
|
|
+ const screenSlides = document.querySelectorAll('.viewer-canvas .screen-slide')
|
|
|
+ let iframeElement: HTMLIFrameElement | null = null
|
|
|
+
|
|
|
+ // 获取iframe元素
|
|
|
+ if (
|
|
|
+ screenSlides &&
|
|
|
+ screenSlides[slideIndex.value] &&
|
|
|
+ screenSlides[slideIndex.value].querySelector('iframe')
|
|
|
+ ) {
|
|
|
+ iframeElement = screenSlides[slideIndex.value].querySelector('iframe') as HTMLIFrameElement
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ throw new Error('未能获取到iframe元素,无法截图')
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // 获取iframe内部的body元素(同源)
|
|
|
+ if (
|
|
|
+ iframeElement.contentWindow &&
|
|
|
+ iframeElement.contentWindow.document &&
|
|
|
+ iframeElement.contentWindow.document.body
|
|
|
+ ) {
|
|
|
+
|
|
|
+ const _ajs = iframeElement.contentWindow.document.createElement('script')
|
|
|
+ _ajs.type = 'text/javascript'
|
|
|
+ _ajs.innerHTML =
|
|
|
+ 'var _js = document.createElement("script");\n' +
|
|
|
+ '_js.type="text/javascript";\n' +
|
|
|
+ '_js.src="https://html2canvas.hertzen.com/dist/html2canvas.min.js";\n' +
|
|
|
+ '_js.onload = function(){\n' +
|
|
|
+ ' var a = document.getElementsByTagName("img")\n' +
|
|
|
+ ' for(var i = 0;i<a.length;i++){a[i].crossOrigin="anonymous"}\n' +
|
|
|
+ ' html2canvas(document.body).then(canvas => {\n' +
|
|
|
+ ' var base64Url = canvas.toDataURL("image/png");\n' +
|
|
|
+ 'var base64 = "<img src=" + base64Url + " />"\n' +
|
|
|
+ 'var file = dataURLtoFile_shishi(base64Url, "截图")\n' +
|
|
|
+ 'beforeUpload_shishi(file,' +
|
|
|
+ "'" +
|
|
|
+ props.userid +
|
|
|
+ "'" +
|
|
|
+ ', ' +
|
|
|
+ "'" +
|
|
|
+ props.courseid +
|
|
|
+ "'" +
|
|
|
+ ', ' +
|
|
|
+ "'" +
|
|
|
+ slideIndex.value +
|
|
|
+ "'" +
|
|
|
+ ', ' +
|
|
|
+ "'0'" +
|
|
|
+ ', ' +
|
|
|
+ "'73'" +
|
|
|
+ ', ' +
|
|
|
+ "'1'" +
|
|
|
+ ')\n' +
|
|
|
+ ' });\n' +
|
|
|
+ '}\n' +
|
|
|
+ 'document.head.appendChild(_js);\n'
|
|
|
+ iframeElement.contentWindow.document.head.appendChild(_ajs)
|
|
|
+
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ throw new Error('未能获取到iframe的body元素,无法截图')
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if (!hasSubmitWork) {
|