| 
			 
					阅读:4021回复:8
				 
				Abduction: the image is too large ??
					Abduction:  
							Sorry, the image is too large, Firefox can not save it. 是多大的圖會出現這句阿?為什麼要有這個限制?能不能把它用掉啊? 好像的確少了複製到剪貼簿和工具列圖示按鈕, 用起來可能不夠方便,有沒有人(Cye3s)會改啊?!  | 
	|
					
						
						
						
						
  | 
	
| 
			 1楼# 
								发布于:2013-03-20 18:00				
			
					一直用不来,各种错误提示,所以改用手势脚本了 
							var canvas = content.document.createElement("canvas");
canvas.width = content.document.body.clientWidth;
canvas.height = content.document.body.clientHeight;
var ctx = canvas.getContext("2d");
ctx.drawWindow(content, 0, 0, canvas.width, canvas.height, "rgb(255,255,255)");
saveImageURL(canvas.toDataURL(), content.document.title + ".png",
                           null,null,null,null,document);经测试可保存页面长度最长32767px的页面,等于或过32768px就会提示组件错误(nsDOMHTMLCanvasElement.toDataURL),不知道怎么解决不过一般来说够用了。 abduction那个记得好像是作者代码里自己写的硬限制,现在已经低于fx本身的限制了 fx复制图片好像有点麻烦,不过可以退一步,你可以复制图片的data url…… var canvas = content.document.createElement("canvas");
canvas.width = content.document.body.clientWidth;
canvas.height = content.document.body.clientHeight;
var ctx = canvas.getContext("2d");
ctx.drawWindow(content, 0, 0, canvas.width, canvas.height, "rgb(255,255,255)");
var imageURI = canvas.toDataURL()
var clip = Components.classes['@mozilla.org/widget/clipboard;1'].getService(Components.interfaces.nsIClipboard);
var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
if(typeof(clip) == "object" && typeof(trans) == "object") {
	trans.addDataFlavor('text/unicode');
	var stingSupporter = Components.classes["@mozilla.org/supports-string;1"]
			.createInstance(Components.interfaces.nsISupportsString);
	stingSupporter.data = imageURI;
	trans.setTransferData("text/unicode", stingSupporter, imageURI.length * 2);
	var clipid = Components.interfaces.nsIClipboard;
	clip.setData(trans, null, clipid.kGlobalClipboard);
	success = true;
}或者你可以尝试截图后弹出一个div然后手动复制/保存,比如下面的简陋版,左键单击关闭,右键可以复制或保存 var canvas = content.document.createElement("canvas");
canvas.width = content.document.body.clientWidth;
canvas.height = content.document.body.clientHeight;
var ctx = canvas.getContext("2d");
ctx.drawWindow(content, 0, 0, canvas.width, canvas.height, "rgb(255,255,255)");
var imageURI = canvas.toDataURL()
var imageBox = content.document.createElement("img");
imageBox.src = imageURI;
imageBox.style.position = "fixed";
imageBox.style.top = "0";
imageBox.style.boxShadow = "#444 2px 2px 2px 1px";
imageBox.height = "500";
imageBox.width = canvas.width/canvas.height*500;
imageBox.onclick = function(e){
	if(e.button === 0){
		content.document.body.removeChild(imageBox);
	}
}
content.document.body.appendChild(imageBox);				 | 
	|
					
						
  | 
	
| 
			 2楼# 
								发布于:2013-03-20 18:00				
			 | 
	|
					
						
  | 
	
| 
			 3楼# 
								发布于:2013-03-20 18:00				
			 | 
	|
					
						
  | 
	
| 
			 4楼# 
								发布于:2013-03-20 18:00				
			
					用掉是啥意思? 
							我记得是Firefox的限制  | 
	|
					
						
  | 
	
| 
			 5楼# 
								发布于:2013-03-20 18:00				
			 | 
	|
					
						
  | 
	
| 
			 6楼# 
								发布于:2013-03-20 18:00				
			图片:2.png ![]() 工具条更烂,不到32768就躺了 你可以试试: <!DOCTYPE HTML>
<html lang="en-US">
<head>
	<meta charset="UTF-8">
	<title>Screen shot test</title>
</head>
<body>
	<pre>當前長度:<span id="bodyLengthLabel"></span></pre>
	<input type="number" id="bodyLength"/>
	<button onclick="SetBodyLength()">設置頁面長度(單位:px)</button>
	<script type="text/javascript">
		function ShowBodyLength(){
			var length = document.defaultView.getComputedStyle(document.body, null).getPropertyValue("height");
			document.getElementById("bodyLengthLabel").textContent = length;
		}
		function SetBodyLength(){
			var bodyLength = Number(document.getElementById("bodyLength").value);
			if( (typeof bodyLength === "number") && (bodyLength > 0) && (bodyLength < Infinity) ){
				document.body.style.height = bodyLength + "px";
				ShowBodyLength();
			}
		}
		ShowBodyLength();
	</script>
</body>
</html>相关bug有,但是不知道是不是一回事  | 
	|
					
						
  | 
	
| 
			 7楼# 
								发布于:2013-03-20 18:00				
			 | 
	|
					
						
  | 
	
| 
			 8楼# 
								发布于:2013-03-20 18:00				
			
					對阿!這什麼意思?!  
							  [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMHTMLCanvasElement.toDataURL]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: resource://gre/modules/devtools/CmdScreenshot.jsm :: Command_screenshotGrabScreen :: line 129" data: no] 你那網頁測的每次上限都不同耶?! 跟 browser.cache.disk.smart_size_cached_value 有關嗎?!  | 
	|
					
						
  | 
	
							
				