2015-05-21 47 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