Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript html2canvas导致IE11挂起并输入;“没有回应”;状态_Javascript_Internet Explorer_Internet Explorer 11_Jspdf_Html2canvas - Fatal编程技术网

Javascript html2canvas导致IE11挂起并输入;“没有回应”;状态

Javascript html2canvas导致IE11挂起并输入;“没有回应”;状态,javascript,internet-explorer,internet-explorer-11,jspdf,html2canvas,Javascript,Internet Explorer,Internet Explorer 11,Jspdf,Html2canvas,这在Firefox和Chrome中非常有效;但是,在internet explorer 11中,此过程需要很长时间,并导致浏览器报告没有响应。如果用户等待的时间足够长(30秒到2分钟之间),则进程将解决 我试图使用html2canvas捕获DOM的一部分的PNG,然后通过jsPDF将PNG转换为PDF。本质上,我有与页面对应的ID元素。我在PNG中捕获页面,然后在PDF转换步骤中将PNG扩展为完整页面,将每个PNG作为页面添加到PDF中。我的代码如下所示: // Default to GMSRD

这在Firefox和Chrome中非常有效;但是,在internet explorer 11中,此过程需要很长时间,并导致浏览器报告没有响应。如果用户等待的时间足够长(30秒到2分钟之间),则进程将解决

我试图使用html2canvas捕获DOM的一部分的PNG,然后通过jsPDF将PNG转换为PDF。本质上,我有与页面对应的ID元素。我在PNG中捕获页面,然后在PDF转换步骤中将PNG扩展为完整页面,将每个PNG作为页面添加到PDF中。我的代码如下所示:

// Default to GMSRD1
        var fileName = "record-of-discussion-form.pdf";
        var pages = ["GMSRD1_page1", "GMSRD1_page2", "GMSRD1_page3", "GMSRD1_page4"]

        if (this.state.parsed.formId === "GMSC1") {
            fileName = "consultee-form.pdf"
            pages = ["GMSC1_page1", "GMSC1_page2", "GMSC1_page3"];
        }
        if (this.state.parsed.formId === "GMSA1") {
            fileName = "assent-form.pdf"
            pages = ["GMSA1_page1", "GMSA1_page2"];
        }
        if (this.state.parsed.formId === "GMSW2" ) {
            fileName = "withdraw-form.pdf"
            pages = ["GMSW2_page1", "GMSW2_page2", "GMSW2_page3"];
        }

        // Objct to build 
        var pdf = new jsPDF({
            orientation: "p",
            unit: "pt",
            format: "a4",
            compression: true
        });

        // Canvas creation promises
        let promises = [];

        // Capture canvas for each page 
        pages.forEach(page => {
            let element = document.getElementById(page);
            promises.push(this.getCanvasData(element));
        });

        Promise.all(promises).then(dataUrls => {
            dataUrls.forEach((dataUrl, i) => {
                pdf.addImage(dataUrl, "PNG", 45, 40, 800 * .63, 980 * .7, undefined, "FAST");

                pdf.addPage();
            });

            let testOutput = pdf.output('arraybuffer'); // arraybuffer 
            var uint8Array = new Uint8Array(testOutput);
            var array = Array.from(uint8Array)

            // <DO something w/ data below>
//默认为GMSRD1
var fileName=“讨论记录表.pdf”;
变量页=[“GMSRD1_第1页”、“GMSRD1_第2页”、“GMSRD1_第3页”、“GMSRD1_第4页”]
if(this.state.parsed.formId==“GMSC1”){
fileName=“consultee form.pdf”
页码=[“GMSC1_第1页”、“GMSC1_第2页”、“GMSC1_第3页”];
}
if(this.state.parsed.formId==“GMSA1”){
fileName=“assent form.pdf”
页码=[“GMSA1_第1页”、“GMSA1_第2页”];
}
if(this.state.parsed.formId==“GMSW2”){
fileName=“撤回表单.pdf”
页码=[“GMSW2_第1页”、“GMSW2_第2页”、“GMSW2_第3页”];
}
//要构建的对象
var pdf=新的jsPDF({
方向:“p”,
单位:“pt”,
格式:“a4”,
压缩:对
});
//画布创作承诺
让承诺=[];
//捕获每个页面的画布
pages.forEach(第=>{
let element=document.getElementById(第页);
promises.push(this.getCanvasData(元素));
});
Promise.all(promises).then(dataurl=>{
forEach((dataUrl,i)=>{
addImage(dataUrl,“PNG”,45,40800*.63980*.7,未定义,“FAST”);
pdf.addPage();
});
设testOutput=pdf.output('arraybuffer');//arraybuffer
var uint8Array=新的uint8Array(testOutput);
var array=array.from(uint8Array)
// 
有人见过这种行为或有任何解决方法吗?想知道是否有办法通过超时将进程的当前状态释放到浏览器以避免这种行为


编辑:我还有一个关于图书馆的开放性问题要解决这个问题(见评论)

您是否尝试清理缓存n/或历史记录?chrome有时也会发生类似情况,这似乎对我很有效

您可以尝试使用属性忽略不必要的元素以提高convent性能。请检查和。

我能问一下为什么这需要在IE中而不是在Edge中工作吗?(你可能有一个充分的理由,但你也可能试图解决一个基本上不相关的浏览器,因为Edge和windows 7在半年后达到真正的EOL)我讨厌IE。别误会。这是客户的要求:(“我得到报酬让它工作”基本上是唯一真正的原因=)话虽如此,html2canvas是github上的一个开源项目,所以如果您还没有提出这个问题,您可能应该这样做(这两个原因都是因为向SO发帖意味着你已经用尽了选择,如果你还没有在他们的问题跟踪器上询问,这将是不正确的,但也因为2分钟对几秒钟就像html2canvas的人们想知道的bug一样)。@Mike'Pomax'Kamermans已经做了;)…希望在这里问同样的问题,以便在你有机会的时候在你的帖子中得到更多的关注,因为最好的答案不在这里。它在html2canvas代码库和文档中=)嗯……这可能是一个想法,尽管我得到的每个元素都是一个页面,它实际上包含了我想要的所有内容。我不确定是否可以从这些页面中删除元素。