CHROME ext / app - 单击图像下载

时间:2014-03-02 05:43:03

标签: javascript google-chrome google-chrome-extension

我想要一个简单的Chrome应用或Ext来更快地下载图片。目前,您必须右键单击并选择另存为等

我看过这个近距离的APP(https://chrome.google.com/webstore/detail/save-image-to-downloads/enjefpkmlibebgbbgidmhpmjhcdffhfm?hl=en)。

清单:

{
   "background": {
      "scripts": [ "save_to_downloads.js" ]
   },
   "description": "Adds a right-click direct download item for images, like Safari.",
   "icons": {
      "128": "icon128.png",
      "16": "icon16.png",
      "48": "icon48.png"
   },
   "key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDXdc9crODeqJcWfwjo671hou/LWYzRmQFi/k/uwGE2Z1ARkm/NAIXS0amsfqCzb2FRJuw9exHGH1E98zotxW94zOY+UesJ4bz9SQT3NTcDcqmB2l1UhHRL0dCXVMig7LZyVyOO8FeBQZULzplF9MylZfBRER+L+d1HN186FFf+9QIDAQAB",
   "manifest_version": 2,
   "name": "Save Image to Downloads",
   "permissions": [ "downloads", "contextMenus" ],
   "update_url": "http://clients2.google.com/service/update2/crx",
   "version": "1.0.5"
}

save_to_downloads.js:

function _anchorDownloader(url, filename) {
  var timeout = 500;
  return 'javascript:\'<!doctype html><html>'+
    '<head></head>' +
    '<script>' +
      'function initDownload() {'+
        'var el = document.getElementById("anchor");'+
        'el.click();' +
        'setTimeout(function() { window.close(); }, ' + timeout + ');' +
      '}'+
    '</script>' +
    '<body onload="initDownload()">' +
      '<a id="anchor" href="' + url + '" download="'+ filename + '"></a>'+
    '</body>' +
    '</html>\'';
};

// A generic onclick callback function.
function downloadResource(info, tab) {
  var url = info['srcUrl'];
  console.log("url: " + url);
  var filename = url.substring(url.lastIndexOf('/')+1);
  if (chrome.downloads) {
    chrome.downloads.download({ url: url, filename: filename, saveAs: false });
  } else {
    var a = document.createElement('a');
    a.href = url;
    a.download = filename;
    // a.click();
    chrome.tabs.create( { 'url' : _anchorDownloader( url, filename ), 'active' : false  } ); // gets around the download limit
  }
}

// Register the contextual menu
chrome.contextMenus.create({"title": "Save Image to Downloads…", "contexts":["image"], "onclick": downloadResource});

这可以使用右键单击和上下文菜单选项下载到默认文件夹。

有没有人知道如何稍微改变这一点,以便使用鼠标点击(例如ALT +右键单击)来下载而不是上下文菜单?

由于

1 个答案:

答案 0 :(得分:0)

您可以使用内容脚本将脚本注入到您想要功能的页面中:

https://developer.chrome.com/extensions/content_scripts

在您的内容脚本中,您需要添加一个事件监听器,以便点击&#39;查看你传递的MouseEvent并查看&#39; altKey&#39; property设置为true。如果是这样,您可以进行下载。

请注意,许多扩展API只能从扩展程序自己的页面(例如后台页面,浏览器操作弹出窗口等)调用,而不能直接在内容脚本中调用。因此,在这种情况下,您可能需要使用消息传递API让内容脚本将消息发送到您的后台页面,并显示要下载的映像的URL。有关详细信息,请参阅https://developer.chrome.com/extensions/messaging