huruka
小狐狸
小狐狸
  • UID35337
  • 注册日期2011-02-26
  • 最后登录2020-06-25
  • 发帖数59
  • 经验57枚
  • 威望0点
  • 贡献值36点
  • 好评度1点
  • 社区居民
  • 忠实会员
阅读:3720回复:6

求助JS达人,关于Keysnail

楼主#
更多 发布于:2013-03-25 23:52
以前在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"
]
];
taglife
千年狐狸
千年狐狸
  • UID38488
  • 注册日期2012-03-20
  • 最后登录2013-04-02
  • 发帖数2052
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
1楼#
发布于:2013-03-25 23:52
huruka:以前在Keysnail中我添加了一段代码,作用是可以用hit a hint的方式保存图像
...
大概google之后,这类错误貌似需要扩展更新才行?
另:作为替代,能否推荐好用的保存图片的扩展?
回到原帖

hit a hint 是啥鳥?
干 gOOGLE 屁事?!
DownThemAll! 吧
Firefox 開啟安全模式,停用個人設定、佈景主題及擴充套件(無附加元件)測試:
說明 > 重新啟動但停用附加元件(Firefox 4+)
Firefox Profile: 說明 > 疑難排解資訊 > 開啟資料夾
排版引擎:Firefox(Gecko), Opera(Presto), Google Chrome(WebKit),
Safari(WebKit), Internet Explorer(Trident), Konqueror(KHTML)
huruka
小狐狸
小狐狸
  • UID35337
  • 注册日期2011-02-26
  • 最后登录2020-06-25
  • 发帖数59
  • 经验57枚
  • 威望0点
  • 贡献值36点
  • 好评度1点
  • 社区居民
  • 忠实会员
2楼#
发布于:2013-03-25 23:52
taglife
干 gOOGLE 屁事?!
回到原帖

我的意思是搜索了一下....
Downthemall我也在用,不过往往我只是需要某几张图片,downthemall的图片批量下载与我不太方便
白左
千年狐狸
千年狐狸
  • UID34985
  • 注册日期2010-12-29
  • 最后登录2023-11-13
  • 发帖数2039
  • 经验655枚
  • 威望0点
  • 贡献值364点
  • 好评度69点
  • 社区居民
  • 忠实会员
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);
试试
-いたんですか? -ええ、ずっと
huruka
小狐狸
小狐狸
  • UID35337
  • 注册日期2011-02-26
  • 最后登录2020-06-25
  • 发帖数59
  • 经验57枚
  • 威望0点
  • 贡献值36点
  • 好评度1点
  • 社区居民
  • 忠实会员
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这个参数是什么作用的?英语不好看不明白...
taglife
千年狐狸
千年狐狸
  • UID38488
  • 注册日期2012-03-20
  • 最后登录2013-04-02
  • 发帖数2052
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
5楼#
发布于:2013-03-25 23:52
huruka
我的意思是搜索了一下....
Downthemall我也在用,不过往往我只是需要某几张图片,downthemall的图片批量下载与我不太方便
回到原帖

只需某幾張圖片直接右鍵另存,何須擴展
Firefox 開啟安全模式,停用個人設定、佈景主題及擴充套件(無附加元件)測試:
說明 > 重新啟動但停用附加元件(Firefox 4+)
Firefox Profile: 說明 > 疑難排解資訊 > 開啟資料夾
排版引擎:Firefox(Gecko), Opera(Presto), Google Chrome(WebKit),
Safari(WebKit), Internet Explorer(Trident), Konqueror(KHTML)
huruka
小狐狸
小狐狸
  • UID35337
  • 注册日期2011-02-26
  • 最后登录2020-06-25
  • 发帖数59
  • 经验57枚
  • 威望0点
  • 贡献值36点
  • 好评度1点
  • 社区居民
  • 忠实会员
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吧...
游客

返回顶部