0

, 나는 main.js 코드가 있습니다 (참조 : Tab screenshot)애드온 SDK를 열고 새 탭 파이어 폭스 애드온에서

function captureVisibleTab() { 
    . 
    . 
    . 
    . 
    var canvas = contentDocument.createElement('canvas'); 
    canvas.style.maxwidth = region.width + "px"; 
    canvas.style.maxheight = region.height + "px"; 
    canvas.width = region.width; 
    canvas.height = region.height; 
    var ctx = canvas.getContext('2d'); 
    ctx.clearRect(region.x, region.y, region.width, region.height); 
    ctx.drawWindow(contentWindow, region.x, region.y, region.width, region.height, backgroundColor); 
    var url = canvas.toDataURL(); 

    tabs.open({ 
    url: self.data.url("test.html"), 
    isPinned: false, 
    onOpen: function onOpen(tab) { 
    }, 
    onReady: function(tab) 
    { 
    console.log('canvas : ' + (JSON.stringify(url))); 
    tab.attach({ 
    contentScript: 'document.body.style.border = "5px solid red"; document.body.appendChild("Test")' 
    }); 
    } 
    }); 
    return url; 
} 

var button = ToggleButton({ 
    id: "ee-button", 
    label: "EE button", 
    icon: { 
    "16": "./icon-16.png", 
    "32": "./icon-32.png", 
    "64": "./icon-64.png" 
    }, 
    onChange: captureVisibleTab 
}); 

을 그리고이 파일에서

이 이미지가 html에 추가 된 새 탭을 열어야합니다.
* 시도 : window.open => 창이 정의되지 않았습니다.
* 시도 : contentScript : 'document.body.style.border = "5px 단색 빨강";' => 작품
* 시도 : contentScript : 'document.body.style.border = "5px solid red"; document.body.appendChild ("테스트") '=> 오류 : URL에 대한

Message: TypeError: Argument 1 of Node.appendChild is not an object. 
    Stack: @javascript:document.body.style.border = "5px solid red"; document.body.appe 
ndChild("Test"):1:47 

답변

3

단지 다음과 같이 HTML로 데이터 URL을 사용

var escapedHtml = escape('<b>rawr</b><img src="blah">') 
var url = 'data:text/html,' + escapedHtml 

정도 당신이 못생긴 URL을 해달라고 bar, html을 blob로 만들고 blob url을 다음과 같이로드하십시오 :

var {Blob, File} = Cu.import("resource://gre/modules/Services.jsm", {}); 
var oFileBody = '<a id="a"><b id="b">hey!</b></a>'; // the body of the new file... 
var oBlob = Blob([oFileBody], { type: "text/html"}); 
var blobUrl = URL.createObjectURL(oBlob); //returns a string like blob:null/bbe1b94e-0800-4af2-9d9e-df09c0b9cab3 so paste that into your url bar 
관련 문제