如何在多个选项卡中保存 greasemonkey 输出
How can I save greasemonkey outputs across numerous tabs
我有一个有效的油脂猴脚本,可以向页面添加一个按钮。单击按钮时,从页面中抓取一些信息,将其放入名为str的变量中。
现在我正在将变量打印到页面上,它工作正常。我最终需要从几个类似的页面使用此输出创建一个文件。
例如:
一页的输出可能是"ABCDEF",第二页的输出可能是"Ghijkl"。我一次将其复制到文本文件中以制作:
abcdef
ghijkl
有没有办法自动将它们保存到同一个变量中,并继续将新输出附加到变量中?我知道不可能从 greasemonkey 写入文件,但真的不知道在这种情况下该怎么办。大约有 100 页,所以我不想复制粘贴 100 次(我可以打开每一页并单击按钮,这并不可怕(。
这是我的代码:
// Create a new div to put the links in and append it to the content div
links_div1 = document.createElement('div');//makes a div
//links_div1.setAttribute('class', 'box generic_datatable dataTable');//makes it look the same as rest of page
//links_div1.setAttribute('id', 'normal_wrapper');
//adds div to beginning of content section
var node = document.getElementById('navHeaderCell');
var parentDiv = node.parentNode;
parentDiv.insertBefore(links_div1,node);
//makes buttons in new divs
links_div1.innerHTML += '<table class="box generic_datatable dataTable" id="normal"><thead><tr class="colhead"><th></th></tr></thead><td>Scrape: <button type="button" id="btn_id">scrape</button></td></table>';
//makes them clickable
addButtonListener();
function addButtonListener() {
//first div
document.getElementById("btn_id").addEventListener("click", function(){scrape()}, true);
//alert("function");
}
function scrape() {
//alert(array);
str = array.join('$');
links_div1.innerHTML += str;
}
//collect all the values in a NodeList
var linksToOpen = document.querySelectorAll ("#content_3col>table.form>tbody>tr>td.dash:nth-of-type(2)");
//alert(linksToOpen);
//--- linksToOpen is a NodeList, we want an array of links...
var array = [];
for (var J = 0, numLinks = linksToOpen.length; J < numLinks; ++J) {
array.push (linksToOpen[J].innerHTML.replace(/<[^>]*>/g,''));
}
大多数 UserScript 环境提供了非常有用的
GM_setValue
和GM_getValue
功能。
不过,您必须小心竞争条件,因此我很想让每个选项卡生成一个随机数(可能基于时间(,然后根据该值将他们的东西放入键中。
然后,在最后,将字符串连接在一起,并在末尾显示一个可以剪切和粘贴的大字符串。
或者,如果您不想剪切和粘贴,则可以生成大量字符串并使用HTML5 download
属性。
根据OP的评论进行编辑
(即时键入,未经测试。
// The documentation talks about the second parametere here -- a default value.
var value = GM_getValue("value", "");
value += str + "'n";
GM_setValue("value", value);
虽然所有 UserScript 方法都应该理解这一点,但也有这个:
var value = GM_getValue("value");
if (value === undefined) {
value = "";
}
value += str + "'n";
GM_setValue("value", value);
甚至:
var value = GM_getValue("value") || "";
value += str + "'n";
GM_setValue("value", value);
相关文章:
- 如何将getJson的响应保存在全局变量中
- 按下按钮时保存cookie
- 如何使用 Angular JS 将数据保存在数据库中
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- HTML5在画布中加载较小的图像并保存实际大小的图像
- 是否可以在浏览器中使用纯JavaScript保存音频流
- 如何将多个画布保存为一个图像
- PHP:显示sqlite数据库中的html格式数据,使用tinymce保存
- 如何将乳胶配方奶粉图像保存到Asp.net中的文件夹中
- 用Greasemonkey编辑专栏
- 保存数组javascript
- 保存串行端口列表与流星
- 将JavaScript变量保存到Rails模型
- Java脚本将URL转换为已保存的URL时出错
- 如何自动保存动态生成的HTML SVG元素
- Javascript/jQuery压缩一个图像正确的评论帖子,并使用Ajax Laravel 5.2保存到控制器中
- 将JQuery Handontable保存到服务器上的excel文件中
- 如何将内容保存在使用 greasemonkey 单击链接时弹出的 html 框架中
- 如何在多个选项卡中保存 greasemonkey 输出
- 使用Greasemonkey/Tampermonkey保存数据以备日后检索