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