Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.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将div捕获到图像中_Javascript_Html_Html2canvas - Fatal编程技术网

Javascript 使用html2canvas将div捕获到图像中

Javascript 使用html2canvas将div捕获到图像中,javascript,html,html2canvas,Javascript,Html,Html2canvas,我正在尝试使用html2canvas <!-- Modal content--> <div class="modal-content"> <div class="modal-header"> <div class="modal-body"> <p>Some text in the modal.</p> 我在这

我正在尝试使用
html2canvas

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>
我在这里读过一些类似的问题,比如

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>

我已经试过密码了

canvasRecord = $('#div').html2canvas(); 
dataURL = canvasRecord.toDataURL("image/png");
        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>
调用
.html2canvas()
后,
画布记录将
未定义

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>

还有这个

$('#div').html2canvas({
      onrendered: function (canvas) {
           var img = canvas.toDataURL()
           window.open(img);
      } 
});
        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>
浏览器会给出一些(确切地说是48个)类似的错误,如:

GET http://html2canvas.appspot.com/?url=https%3A%2F%2Fmts1.googleapis.com%2Fvt%…%26z%3D12%26s%3DGalileo%26style%3Dapi%257Csmartmaps&callback=html2canvas_1 404 (Not Found) 
        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>

顺便说一句,我使用的是v0.34,我添加了参考文件
html2canvas.min.js
jquery.plugin.html2canvas.js

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>
如何将
div
转换为
canvas
以捕获图像

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>
于2013年3月26日编辑

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>
我找到了工作

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>
但不幸的是,当谷歌地图嵌入我的应用程序时,会出现错误

<html>
<head>
<style type="text/css">
div#testdiv
{
    height:200px;
    width:200px;
    background:#222;
}
div#map_canvas
{
    height: 500px;
    width: 800px;
    position: absolute !important;
    left: 500px;
    top: 0;
}
</style>
 <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3&sensor=false"></script>
<script type="text/javascript" src="html2canvas.min.js"></script>
<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script language="javascript">
$(window).load(function(){
     var mapOptions = {
        backgroundColor: '#fff',
        center: new google.maps.LatLng(1.355, 103.815),
        overviewMapControl: true,
        overviewMapControlOptions: { opened: false },
        mapTypeControl: true,
        mapTypeControlOptions: { position: google.maps.ControlPosition.TOP_LEFT, style: google.maps.MapTypeControlStyle.DROPDOWN_MENU },
        panControlOptions: { position: google.maps.ControlPosition.RIGHT_CENTER },
        zoomControlOptions: { position: google.maps.ControlPosition.RIGHT_CENTER },
        streetViewControlOptions: { position: google.maps.ControlPosition.RIGHT_CENTER },
        disableDoubleClickZoom: true,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        minZoom: 1,
        zoom: 12
    };
    map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);

    $('#load').click(function(){

            html2canvas($('#testdiv'), {
                onrendered: function (canvas) {
                    var img = canvas.toDataURL("image/png")
                    window.open(img);
                }
            });

    });
});
</script>
</head>
<body>
<div id="testdiv">
</div>
<div id="map_canvas"></div>
<input type="button" value="Save" id="load"/>
</body>
</html>
        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>

div#testdiv
{
高度:200px;
宽度:200px;
背景:#222;
}
分区#地图#画布
{
高度:500px;
宽度:800px;
位置:绝对!重要;
左:500px;
排名:0;
}
$(窗口)。加载(函数(){
变量映射选项={
背景颜色:“#fff”,
中心:新google.maps.LatLng(1.355103.815),
overviewMapControl:true,
概览MapControlOptions:{打开:错误},
mapTypeControl:true,
mapTypeControlOptions:{位置:google.maps.ControlPosition.TOP_左,样式:google.maps.MapTypeControlStyle.DROPDOWN_菜单},
panControlOptions:{position:google.maps.ControlPosition.RIGHT_CENTER},
ZoomControl选项:{position:google.maps.ControlPosition.RIGHT_CENTER},
streetViewControlOptions:{position:google.maps.ControlPosition.RIGHT_CENTER},
禁用双击缩放:真,
mapTypeId:google.maps.mapTypeId.ROADMAP,
minZoom:1,
缩放:12
};
map=new google.maps.map(document.getElementById('map_canvas'),mapOptions);
$('#加载')。单击(函数(){
html2canvas($('testdiv'){
onrendered:函数(画布){
var img=canvas.toDataURL(“图像/png”)
窗口打开(img);
}
});
});
});

如果你只想得到一个div的截图,你可以这样做

html2canvas($('#div'), {
  onrendered: function(canvas) {
    var img = canvas.toDataURL()
    window.open(img);
  }
});
        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>
您应该试试这个(测试,至少在Firefox中有效):

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>
我正在运行这些代码行以获得完整的浏览器屏幕(只有可见屏幕,而不是孔位置):

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>

这里有更多的解释和选项:

我遇到了与您描述的相同类型的错误,但我的错误是由于dom没有完全准备就绪。我测试了jQuery拉div和getElementById,只是为了确保jQuery选择器没有什么奇怪的地方。下面是一个在Chrome中工作的示例:

<html>
<head>
<style type="text/css">
div {
    height: 50px;
    width: 50px;
    background-color: #2C7CC3;
}
</style>
<script type="text/javascript" src="html2canvas.js"></script>
<script type="text/javascript" src="jquery-1.9.1.js"></script>
<script language="javascript">
$(document).ready(function() {
//var testdiv = document.getElementById("testdiv");
    html2canvas($("#testdiv"), {
        onrendered: function(canvas) {
            // canvas is the final rendered <canvas> element
            var myImage = canvas.toDataURL("image/png");
            window.open(myImage);
        }
    });
});
</script>
</head>
<body>
<div id="testdiv">
</div>
</body>
</html>
        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>

div{
高度:50px;
宽度:50px;
背景色:#2C7CC3;
}
$(文档).ready(函数(){
//var testdiv=document.getElementById(“testdiv”);
html2canvas($(“#testdiv”){
onrendered:函数(画布){
//画布是最终渲染的元素
var myImage=canvas.toDataURL(“image/png”);
窗口打开(myImage);
}
});
});

当div非常宽或相对于屏幕偏移时,可以尝试使用此代码捕获div

var div = $("#div")[0];
var rect = div.getBoundingClientRect();

var canvas = document.createElement("canvas");
canvas.width = rect.width;
canvas.height = rect.height;

var ctx = canvas.getContext("2d");
ctx.translate(-rect.left,-rect.top);

html2canvas(div, {
    canvas:canvas,
    height:rect.height,
    width:rect.width,
    onrendered: function(canvas) {
        var image = canvas.toDataURL("image/png");
        var pHtml = "<img src="+image+" />";
        $("#parent").append(pHtml);
    }
});
        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>
var div=$(“#div”)[0];
var rect=div.getBoundingClientRect();
var canvas=document.createElement(“canvas”);
canvas.width=rect.width;
canvas.height=rect.height;
var ctx=canvas.getContext(“2d”);
ctx.translate(-rect.left,-rect.top);
html2canvas(部门{
画布:画布,
高度:垂直高度,
宽度:rect.width,
onrendered:函数(画布){
var image=canvas.toDataURL(“image/png”);
var pHtml=“”;
$(“#父项”).append(pHtml);
}
});

使用html2canvas可以轻松完成,请尝试以下方法

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>
尝试在html模式中添加div,并使用jquery函数调用模型id。在该函数中,您可以指定要显示的图像的大小(高度、宽度)。使用modal是一种简单的方法,可以通过单击按钮将html div捕获到图像中

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>
例如,看看代码示例

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>
`

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>

模态中的一些文本

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>
`

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>

将要显示的div粘贴到模型内部。希望这会有帮助

窗口。打开对我不起作用。。。只是一个空白页呈现。。。但是我能够通过替换作为目标创建的预先存在的img元素的src属性,使png出现在页面上

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>
$(“#btn_屏幕截图”)。单击(函数(){
元素到png(“容器”、“testhtmltocanvasimg”);
});
函数元素\u到\u png(srcElementID,targetIMGid){
log(“为元素id调用元素\u到\u png”+srcElementID);
html2canvas($(“#”+srcElementID)[0])。然后(函数(画布){
var myImage=canvas.toDataURL(“image/png”);
$(“#”+targetIMGid).attr(“src”,myImage);
log(“html2canvas completed.png呈现为”+targetIMGid);
});
}

我不知道答案是否会迟交,但我已经使用了这个表格

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>
JS:

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>
HTML:

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>

#你的内容。。。
下载PDF

只需使用下面的代码片段,您就可以获得分区的屏幕截图,并轻松保存它。在这里,我使用了整个主体,您可以通过放置id/类名来选择特定的image/div元素

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">


            <div class="modal-body">
                <p>Some text in the modal.</p>
 html2canvas(document.getElementsByClassName("image-div")[0], {
  useCORS: true,
}).then(function (canvas) {
  var imageURL = canvas.toDataURL("image/png");
  let a = document.createElement("a");
  a.href = imageURL;
  a.download = imageURL;
  a.click();
});

我在你的另一个问题中告诉过你,谷歌不允许这样做:阅读div,然后自己绘制内容怎么样?这对你有用?(我没有发现构建的0.34,所以它是0.40)我会解释一下,如果它是你想要的答案。你从哪里得到这些错误?在我的样本中?为什么这个问题甚至与googleapis.com有关?这个问题的原因是
http://html2canvas.appspot.com/
不存在我尝试了另一个测试并添加了一个图像