2014-01-22 32 views
0

嘗試在Chrome擴展中嵌入當前網頁的畫布元素頂部,但它不起作用。如何將canvas元素嵌入到當前網頁的頂部?

var image = document.createElement('img'); 
image.onload = drawOntoCanvas(); 
var imgURL = chrome.extension.getURL("sandwich-48.png"); 
image.src = imgURL; 
alert(imgURL); 
function drawOntoCanvas() 
{ 
var testcanvas = document.createElement('canvas'); 
var testcontext = testcanvas.getContext('2d'); 

/// set size 
testcanvas.width = 100; /// "this" = image just loaded 
testcanvas.height = 100; 

testcontext.drawImage(this, 0, 0); 
alert("In content script"); 
document.body.appendChild(testcanvas); 
//testcanvas.parentNode.removeChild(testcanvas); 
} 

對不起,我的天真在此先感謝!

+0

給畫布元素一個高度和寬度,更不用說你馬上刪除它。 –

+0

我也試過用這個「testcanvas.setattribute(」width「,」100「)在我的內容腳本中仍然不能正常工作? – user3163912

+0

並將其附加/前綴到文本或頭部的文本中 –

回答

1

爲了讓您的圖片在網頁上下文中可用,您需要在清單中聲明web_accessible_resources


示例實現是這樣的:

擴展名文件:

  root-directory/ 
         |_____manifest.json 
         |_____content.js 
         |_____someIcon.png 

manifest.json的:

{ 
    "manifest_version": 2, 
    "name": "Test Extension", 
    "version": "0.0", 

    "content_scripts": [{ 
     "matches": ["*://*/*"], 
     "js":   ["content.js"] 
    }], 

    "web_accessible_resources": ["someIcon.png"] 
} 

CON tent.js:

var image = document.createElement('img'); 
image.onload = drawOntoCanvas; // <-- no `()` when setting the callback 
image.src = chrome.extension.getURL("someIcon.png"); 

function drawOntoCanvas() { 
    var testcanvas = document.createElement('canvas'); 
    var testcontext = testcanvas.getContext('2d'); 

    testcanvas.width = 100; 
    testcanvas.height = 100; 

    testcontext.drawImage(this, 0, 0); 
    document.body.appendChild(testcanvas); 
} 
+0

」web_accessible_resources「: [「sandwich-48.png」]:Yupp也嘗試過這種方法......感謝你一直以來幫助我...但它仍然無法正常工作 – user3163912

+0

我確定爲我工作(請參閱上面的示例代碼)粘貼我的代碼,但**根據您的文件和圖像名稱更改文件名**。您是否一直滾動到頁面(因爲圖像將被繪製到哪裏)?是所有文件和圖像)在同一個頂級目錄中? – gkalpak

+0

我的所有文件與我的所有內容和後臺腳本都在同一個目錄中 而且我正在獲取頁面的圖像底部Thanx 那麼我們可以添加al大量的代碼在這裏? – user3163912

相關問題