javascript - html2canvas导致IE11挂起进入 "Not responding"状态

标签 javascript internet-explorer internet-explorer-11 jspdf html2canvas

这在 Firefox 和 Chrome 中运行良好;但是,在 Internet Explorer 11 中,该过程需要很长时间,并导致浏览器报告没有响应。如果用户等待足够长的时间(30 秒到 2 分钟之间的任何时间),该过程就会解决。

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

// 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>

有没有人见过这种行为或有任何解决方法?想知道是否有办法通过超时将进程的当前状态释放到浏览器以避免这种行为?

编辑:我在库中有一个 Unresolved 问题也解决了这个问题(见评论)

最佳答案

您是否尝试清理缓存和历史记录? chrome 有时会发生类似的情况,这似乎对我有用

关于javascript - html2canvas导致IE11挂起进入 "Not responding"状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56588535/

相关文章:

Javascript location.href 在 Explorer 11 上崩溃

java - IE11 CORS 拒绝 https 上的选项

javascript - VSCode 错误的 javascript 格式

javascript - Raphael 沿着路径的 SVG 动画

html - 如何从 iframe 中删除额外的边距?

css - 为什么字体大小是: 16px bigger in Internet Explorer 11 than in FireFox?

javascript - (JavaScript) 未创建 Cookie

javascript - 对 mean.js 全栈 javascript 应用程序的搜索引擎优化仍然是一个主要问题,应该如何处理?

post - 如何使用C#中的发布信息打开IE?

css - 在 ie7 兼容性 View 中,所有边框均未显示在表格上