html2canvas - IndexSizeError

时间:2016-09-08 10:32:41

标签: javascript

我正在尝试将一张图片加载到我的页面上的div中,然后尝试传入图像的原始数据,或尝试将图像复制到某个位置。

我能找到的最佳方法是使用html2canvas

尝试将图像打开到预览窗口时出现以下错误:

JavaScript运行时错误:IndexSizeError

我已经阅读了一些帖子,建议我可以使用以下方法渲染div:

html2canvas($("#mapDiv"), {
            onrendered: function (canvas) {
                // canvas is the final rendered <canvas> element
                var imgData = canvas.GetContext("2d").getImageData(bounds.left, bounds.top, bounds.width, bounds.height);
                var myImage = imgData.toDataURL("image/png");
                window.open(myImage);
            }
        });

问题出现在html2canvas js文件中的以下行

ctx.drawImage(canvas, bounds.left, bounds.top, bounds.width, bounds.height, 0, 0, bounds.width, bounds.height);

是否有可能以这种方式渲染动态加载到div中的图像,因为由于用户具有不同的分辨率而无法传递像素参数

如果有可能,我做错了什么?

1 个答案:

答案 0 :(得分:0)

$i = 0;
$counter = 1;
$split = 0;
foreach ($array as $i => $value) {
if($split >= 10) {
    echo "<br /><br /><br /><br />";
    $split = 0;
}
if(++$counter % 2 === 0) {
    echo "<div style='width:100%; text-align:center;'>";
    echo "<table>";
    echo "<tr><td class='value'>Name</td></tr>";
} else {
    echo "<tr><td class='value'>Status</td></tr>";
    $change = 'Error';
    if (isset($_SESSION['old_value'][$i])) {
    $change = ($value - $_SESSION['old_value'][$i]);
        if ($change >= 10) {
            echo "<tr><td class='update'>".$change."</td></tr>";
            echo "</table>";
            echo "</div>";
            $split++;
        } else {
            echo "<tr><td class='value'>".$change."</td></tr>";
            echo "</table>";
            echo "</div>";
            $split++;
        }
    } else {
        echo "<td class='value'>0</td>";
    }
    $_SESSION['old_value'][$i] = $value;
}
}

传递您想要快照的元素的ID。