CIDから作成したHTMLDocumentでもCanvasが問題なく扱える

CIDからHTMLDocumentが作成できるのはnanto_viさんが書いているとおり.DonutGにサムネイル機能を搭載するにあたって,nsICanvasRenderingContextInternalのインスタンスを作って,そこからコンテキストを作るのがいいらしいとなったのだけれど,風博士のソースを見る限り,MOZILLA_INTERNAL_APIというマクロをオンにしないとたぶん使えない.んで,それを回避するために,CIDから空のHTMLDocumentを作ってCanvas要素を作ればいいんじゃね?と考えた.試したところ問題なく動いた.以下はExtension Developer上で試したコード.Shell.enumWinsという変数で,今開いているウィンドウの配列が取得できる.

const NS_HTMLDOCUMENT_CID =  '{5d0fcdd0-4daa-11d2-b328-00805f8a3859}';
var doc = Components.classesByID[NS_HTMLDOCUMENT_CID].createInstance();
var canvas = doc.createElement("canvas");
var ctx =  canvas.getContext('2d');
ctx.drawWindow(Shell.enumWins[1].content, 0,0,300,300,  "rgb(255,255,255)");
var str = canvas.toDataURL();

これがstrの内容の画像:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です