| 
			 
					阅读:4547回复:6
				 
				求助JS达人,关于Keysnail
					以前在Keysnail中我添加了一段代码,作用是可以用hit a hint的方式保存图像 
							最近更新Firefox以后,发现这个功能无法实现了,按下快捷键后提示错误: [Exception... "Not enough arguments [nsIWebBrowserPersist.saveURI]" nsresult: "0x80570001 (NS_ERROR_XPC_NOT_ENOUGH_ARGS)" location: "JS frame :: chrome://keysnail/content/eval.js :: plugins.options["hok.actions"]< :: line 205" data: no] 不知道能否修改代码来解决 大概google之后,这类错误貌似需要扩展更新才行? 另:作为替代,能否推荐好用的保存图片的扩展? 代码内容如下: plugins.options["hok.actions"] = [
['m',
M({ja: "簡易版画像を保存", en: "Save image"}),
function (elem) {
var doc = elem.ownerDocument;
var url = window.makeURLAbsolute(elem.baseURI, elem.src);
var leafname = elem.src.split(/\/+/g).pop();
// leafnameには?.*という文字列が追加されている場合があるので、?以下を取り除く
leafname = leafname.match(/([^?]+)\?*/)[1];
try {
window.urlSecurityCheck(url, doc.nodePrincipal);
//new obj_URI object
var obj_URI = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService).newURI(elem.src, null, null);
 
//new file object
var obj_TargetFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
 
//set file with path
obj_TargetFile.initWithPath("D:\\Pic");
obj_TargetFile.append(leafname);
//if file doesn't exist, create
if(!obj_TargetFile.exists()) {
obj_TargetFile.create(0x00,0644);
}
 
//new persitence object
var obj_Persist = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"].createInstance(Components.interfaces.nsIWebBrowserPersist);
 
// with persist flags if desired
const nsIWBP = Components.interfaces.nsIWebBrowserPersist;
const flags = nsIWBP.PERSIST_FLAGS_REPLACE_EXISTING_FILES;
obj_Persist.persistFlags = flags | nsIWBP.PERSIST_FLAGS_FROM_CACHE;
 
//save file to target
obj_Persist.saveURI(obj_URI,null,null,null,null,obj_TargetFile);
display.showPopup("Save image",L(obj_TargetFile.path));
}catch(e){
alert(e);
}
},
false, false, "img"
]
];				 | 
	|
| 
			 1楼# 
								发布于:2013-03-25 23:52				
			 | 
	|
					
						
  | 
	
| 
			 2楼# 
								发布于:2013-03-25 23:52				
			 | 
	|
| 
			 3楼# 
								发布于:2013-03-25 23:52				
			
					obj_Persist.saveURI(obj_URI,null,null,null,null,obj_TargetFile); 
							改成 obj_Persist.saveURI(obj_URI,null,null,null,null,null,obj_TargetFile); 试试  | 
	|
					
						
  | 
	
| 
			 4楼# 
								发布于:2013-03-25 23:52				
			
					多谢白左提供思路,我以saveURI为关注重点又查了一下,貌似有些明白是怎么回事了: 
							https://bugzilla.mozilla.org/show_bug.cgi?id=820522 To what I understand, from Firefox 18, a new new parameter called aPrivacyContext as been added to this method. 话说aPrivacyContext这个参数是什么作用的?英语不好看不明白...  | 
	|
| 
			 5楼# 
								发布于:2013-03-25 23:52				
			 | 
	|
					
						
  | 
	
| 
			 6楼# 
								发布于:2013-03-25 23:52				
			
					把 
							obj_Persist.saveURI(obj_URI,null,null,null,null,obj_TargetFile); 改成 obj_Persist.saveURI(obj_URI,null,null,null,null,obj_TargetFile,null); 可行,但是在某些网站上无法正常保存 我还是先用回17吧...  | 
	|