|
阅读:4543回复: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吧... |
|