कई एक्सटेंशन के कोड की जांच करने के बाद। मैंने निम्नलिखित दृष्टिकोण लिया (एक विशेष डोम तत्व का स्नैपशॉट लेने के लिए)। इस पूरे पेज के स्क्रीनशॉट लेने के लिए, ब्राउज़र विंडो के स्क्रीनशॉट लेने के लिए और एक विशेष डोम तत्व के स्क्रीनशॉट लेने के लिए एक Firefox विस्तार में इस्तेमाल किया जा सकता है (और उसके बच्चे नोड्स के सभी):
- को कैनवास जोड़े xul।
- तत्व के आयाम और शीर्ष-बाएं समन्वय खोजें।
- खिड़की के कैनवास के हिस्से को कॉपी करें।
- कैनवास को बेस 64 पीएनजी फ़ाइल में कनवर्ट करें।
function getElementScreenshot(elm) {
var x = findPosX(elm);
var y = findPosY(elm);
var width = elm.clientWidth;
var height = elm.clientHeight;
var cnvs = document.getElementById("aCanvas");
cnvs.width = width;
cnvs.height = height;
var ctx = cnvs.getContext("2d");
// To take a snapshot of entire window
// ctx.drawWindow(mainWindow.content, 0, 0, mainWindow.innerWidth, mainWindow.innerHeight, "rgb(255,255,255)");
ctx.drawWindow(mainWindow.content, x, y, width, height, "rgb(255,255,255)");
return(cnvs.toDataURL());
}
ऊपरी बाएँ एक तत्व के समन्वय को खोजने के लिए
function findPosX(obj) {
var curleft = 0;
if (obj.offsetParent) {
while (1) {
curleft += obj.offsetLeft;
if (!obj.offsetParent) {
break;
}
obj = obj.offsetParent;
}
} else if (obj.x) {
curleft += obj.x;
}
return curleft;
}
function findPosY(obj) {
var curtop = 0;
if (obj.offsetParent) {
while (1) {
curtop += obj.offsetTop;
if (!obj.offsetParent) {
break;
}
obj = obj.offsetParent;
}
} else if (obj.y) {
curtop += obj.y;
}
return curtop;
}
साइडबार से browser.xul तक पहुंचने के लिए
var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIWebNavigation)
.QueryInterface(Components.interfaces.nsIDocShellTreeItem)
.rootTreeItem
.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIDOMWindow);
mainWindow.gBrowser.addTab(...);
यहां प्रतिक्रिया पोस्ट करने के लिए धन्यवाद :) – flpmor
यह समाधान बहुत अच्छा काम करता है, हालांकि जब आप वीडियो लेते हैं तो यूट्यूब पर, यदि आप एसएस लेते हैं, तो यह वीडियो कैप्चर के बजाय ब्लैक बॉक्स दिखाता है। क्या इस मुद्दे के लिए कोई कामकाज है? –
@Ivan: क्या आप इसे किसी ऐड-ऑन के रूप में अपलोड करने में सक्षम थे? मैं इसका इस्तेमाल कर सकता था। जाहिर है आज भी कोई ऐड-ऑन नहीं है जो इसे सीधे अनुमति देता है। –