我转到页面,它有1个zip文件,但我不知道名称,而不是.zip
。
我希望Greasemonkey自动下载此zip文件,也许使用flashgot或其他东西?
所以我需要它在页面加载时激活,然后查找*.zip
,并自动将其添加到下载。
有什么想法吗?
答案 0 :(得分:13)
Greasemonkey本身无法自动将zip文件或其他任何内容保存到本地文件系统。
这是设计的;允许用户/页面JavaScript保存文件是一个经过验证的安全灾难。
您的选择:
GM 可以做的是弹出文件保存对话框以获取正确的文件:
如果只需点击一次,仍然需要用户互动。
例如,假设该页面包含以下链接:
<a href="http://Suspicious.com/TotallyOwnYourBankAndCreditCardAccounts.zip">
Click me, sucka!
</a>
然后此代码将打开它的文件保存对话框:
var clickEvent = document.createEvent ('MouseEvents');
var firstZipFile = document.querySelector ("a[href*='.zip']");
clickEvent.initEvent ('click', true, true);
firstZipFile.dispatchEvent (clickEvent);
Greasemonkey可以使用GM_xmlhttpRequest()将文件发送到您的网络应用程序 - ,您必须编写。然后,Web应用程序可以自动将文件保存到服务器。您可以将本地计算机设置为服务器。
有关此方法的更多帮助,read this然后提出一个新问题。
如果您决定采用Firefox附加路线,请参阅"MDN: Downloading files"。
有关此方法的更多帮助,read this然后提出一个新问题。
答案 1 :(得分:0)
这是我在greasmonkey中使用的代码,用于从@include语句中的url提供的位置下载zip文件。
// ==UserScript==
// @name zipexport
// @namespace refresh page
// @include https://control.com/export.php
// @version 1
// @grant none
// ==/UserScript==
var timerVar= setInterval(function() {DoMeEverySecond (); }, 60000);
function DoMeEverySecond ()
{
setInterval('window.location.reload()',10000);
$(document).ready(function()
{
setTimeout(function(){
document.getElementsByClassName("btn btn-lg btn-primary")[0].click();
}, 1000);});
}
为了得到一些想法,请仔细阅读..
// @include https://control.com/export.php
使用此处的源页面链接
setInterval(function() {DoMeEverySecond (); }, 60000);
帮助您调用函数DoMeEverySecond(); 60000ms(60s = 1min)后
setInterval('window.location.reload()',10000);
用于每10秒重新加载一次页面。我使用它只是为了确保网页更新到最新状态(我有一个文件下载,每小时更新一次)。如果您不需要,可以避免。
$(document).ready(function()
仅当我们使用此语句时,才会在完全重新加载网页后调用function()。
document.getElementsByClassName("btn btn-lg btn-primary")[0].click();
这里可以使用getElementsByClassName / getElementsById等基于可以指向您要下载的文件的内容(通过在源页面中右键单击使用inspect元素来了解哪个类/ id可以指向您的zip文件) 。
如果您在同一个班级下调用多个变量,[0]可能会有所帮助。
click()
在指定的元素中执行鼠标单击。(这应该有助于下载文件)