2017-01-09 104 views
0

我試圖開發我的第一個Chrome擴展,將DOM元素轉換爲圖像。Chrome擴展dom元素到圖像

我看了一些示例擴展,試圖理解如何實現這一點,並且有一些非常好的示例用於從整個頁面創建圖像,但不是特定元素。

我也看了一些JavaScript庫,將畫布保存爲圖像(https://html2canvas.hertzen.com/)。

到目前爲止,我已經創建了一個彈出式窗口,按鈕的基本設置觸發腳本:

function handleDOM (results){ 
     console.log('ELEMENT:', results) 

     html2canvas($(results), { 
      onrendered: function(canvas) { 
       theCanvas = canvas; 
       document.body.appendChild(canvas); 

       // Convert and download as image 
       Canvas2Image.saveAsPNG(canvas); 
       $("#img-out").append(canvas); 
       // Clean up 
       //document.body.removeChild(canvas); 
      } 
     }); 
    } 

    $('#btn-thumbnail').click(function(){ 
     chrome.tabs.query({active: true}, function(tabs) { 
      var tab = tabs[0]; 
      chrome.tabs.executeScript(tab.id, { 
       code: 'document.getElementById("elementId")' 
      }, handleDOM); 
     }); 
    }) 

但是,這並不工作,因爲我猜html2canvas需要訪問DOM找到元件。

有關如何處理此問題的任何建議將不勝感激! TIA!

+1

executeScript只將結果傳遞給JSON-ifable部分對象。意思是,DOM元素不能被傳送。在內容腳本中處理圖像。 – wOxxOm

+0

在彈出窗口中,要獲取當前選項卡,幾乎總是要使用'chrome.tabs.query({active:true,currentWindow:true}'(即包括'currentWindow:true')。如果沒有它,您將在所有窗口中提供一個活動標籤列表,這會導致當前窗口中的活動標籤不能保證是列表中的第一個元素,如果你不包含'currentWindow:true',你將會有一個間歇錯誤。 – Makyen

回答