2015-05-21 46 views
3

我创建了一个游戏中,用户随到随由4张独立的幻灯片4个图像来创建合成图像,然后我希望能够导出到“库”功能对我现场。我试图用html2canvas但我遇到了一些问题html2canvas不渲染图像(外部托管图片)

这是我的jquery:

var shotit = function() { 
$('.bodyWrap').html2canvas({ 
onrendered : function(canvas) { 
var img = canvas.toDataURL(); 
    $('<img>',{src:img}).appendTo($('body')); 
     } 
    }); } 

裹身是有很多在它的子元素的一个很长的html元素,但它基本上是这样的

<div class="bodyWrap"> 

     <div class="header"> 
      <h1>TITLE</h1> 
     </div> 

      <div class="slideshowWrapper"> 
       <div class="slideshow"> 
        <div class="slideshowWrapper"> 
       <div class="slideshow"> 
        <div class="slide"> 
         <img class="img2" src="https://i.imgur.com/mnJDmlS.jpg" alt="head1"> 
<div class="emailButton"> 
<a class="emailLink" href="mailto:emailaddres[email protected]?Subject=Let's mail"target="_blank"><br>Name of Artist</a> 
</div> 
        </div> 
        <div class="slide"> 
         <img https://picture.jpg> 
        </div> 
         <div class="prevControl"></div> 
         <div class="nextControl"></div> 
       <div class="slideshow"> 
        <div class="slide"> 
         <img https://picture.jpg> 
        </div> 
        <div class="slide"> 
         <img https://picture.jpg> 
        </div> 
         <div class="prevControl"></div> 
         <div class="nextControl"></div> 
       <div class="slideshow"> 
        <div class="slide"> 
         <img https://picture.jpg> 
        </div> 
        <div class="slide"> 
         <img https://picture.jpg> 
        </div> 
         <div class="prevControl"></div> 
         <div class="nextControl"></div> 
       <div class="slideshow"> 
        <div class="slide"> 
         <img https://picture.jpg> 
        </div> 
        <div class="slide"> 
         <img https://picture.jpg> 
        </div> 
         <div class="prevControl"></div> 
         <div class="nextControl"></div> 
        </div> 
       </div> 
      </div> 
</div> 

图像托管在外部imgur而不是在我的网站上。

,然后一个按钮,看起来像这样(为服用PIC)

<a href="#" onClick="shotit()">take picture</a> 

对不起这就是可能有点过分了代码,但我只是不知道问题出在哪里!

无论如何,任何帮助或指针感激地收到!感谢

+0

请参阅此[链接](http://html2canvas.hertzen.com/examples.html) – Rayon

回答

1

试试这个:

<div class="bodyWrap"> 
    <div class="header"> 
    <h1>TITLE</h1> 
    </div> 
    <div class="slideshowWrapper"> 
    <div class="slideshow"> 
     <div class="slide"> 
     <img src="https://picture.jpg"> 
     </div> 
     <div class="slide"> 
     <img src="https://picture.jpg"> 
     </div> 
     <div class="prevControl"></div> 
     <div class="nextControl"></div> 
     <div class="slideshow"> 
     <div class="slide"> 
      <img src="https://picture.jpg"> 
     </div> 
     <div class="slide"> 
      <img src="https://picture.jpg"> 
     </div> 
     <div class="prevControl"></div> 
     <div class="nextControl"></div> 
     <div class="slideshow"> 
      <div class="slide"> 
      <img src="https://picture.jpg"> 
      </div> 
      <div class="slide"> 
      <img src="https://picture.jpg"> 
      </div> 
      <div class="prevControl"></div> 
      <div class="nextControl"></div> 
      <div class="slideshow"> 
      <div class="slide"> 
       <img src="https://picture.jpg"> 
      </div> 
      <div class="slide"> 
       <img src="https://picture.jpg"> 
      </div> 
      <div class="prevControl"></div> 
      <div class="nextControl"></div> 
      </div> 
     </div> 
     </div> 
    </div> 
    <a href="#" onClick="shotit(event)">take picture</a> 
    <script src="jquery-2.1.1.min.js"></script> 
    <script src="html2canvas.js"></script> 
    <script> 
     var shotit = function(e) 
     { 
     e.preventDefault(); 
     html2canvas($('.bodyWrap'), { 
      onrendered: function(canvas) 
      { 
      document.body.appendChild(canvas); 
      }, 
      logging:true 
     }); 
     }; 
    </script> 
+0

哎!啊谢谢,这几乎做到了,但它不包括'.slideshow'或'.slide'元素......任何想法为什么?我需要将它们添加到jQuery中吗? – Phoebe19

+0

另外我忘了提及,幻灯片使用jquery的功能,是影响它? (对不起,我不知道该怎么在这里做的代码) $(文件)。就绪(函数(){$ ()循环({ \t超时 '幻灯片'。:0, \t幻灯片:“> DIV。滑动”, \t速度:500, \t FX: “scrollHorz” \t}); \t $( 'nextControl ')上(' 点击',函数(E){ \t $(本)。最接近( '幻灯片 ')周期(' 下一步 '); \t}); \t $('。prevControl ')上(' 点击',functi (e){ \t $(this).closest('。slideshow').cycle('prev'); \t}); ('click',function(e){(“。sidebarright”)。toggleClass(“sidebarrightactive”); }); }); – Phoebe19

+0

请把相对路径的img标签...这将尽...请接受的答案,如果它已履行您的查询...... – Rayon