阅读:3499回复: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
Cye3s:有改过的吧-_- 我就是用你這個 3.3.0 阿 !但太長的圖片限制能不能用掉 |
|
|
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 有關嗎?! |
|
|