我的Greasemonkey脚本开始加载一系列图像.如何在需要时停止它
My Greasemonkey script starts a sequence of images loading. How do I stop it when desired?
我在拨号时使用ImgLikeOpera和Squid缓存代理来管理我的带宽。但是,我不能将其设置为一次加载一个图像,所以我有一个好主意,那就是编写一个脚本,在新的选项卡中一次打开页面上的每个图像,然后关闭它们,以便将它们保存在我的缓存中。
脚本运行得很好,添加了一个开始按钮,这样我就可以控制它何时开始。。。但不知道如何制作一个会中断进程的停止按钮。我试了很多东西,但都没用。。。
当它在循环中时,它似乎听不到循环外发生了什么。。。
我有一种感觉,有一种非常简单的方法可以做到这一点,但我越来越沮丧。这难道不是休息或返回的目的吗?
以下是我的脚本的相关部分:
var box = document.createElement ('div');
box.id = 'mySelectBox';
document.body.appendChild (box);
box.innerHTML = 'click>';
var searchButton = document.createElement ('div');
searchButton.className = 'mySearchButton';
searchButton.textContent = 'Search and open';
box.insertBefore (searchButton, box.nextSibling);
var stopButton = document.createElement ('div');
stopButton.className = 'myStopButton';
stopButton.textContent = 'Stop';
box.insertBefore (stopButton, box.nextSibling);
var mytable = document.getElementById ('lair-sort-pets').getElementsByTagName ('img');
var linksToOpen = [];
var mywin2 = null;
function openpics () {
for (var J = 0, L = mytable.length; J < L; J++) {
linksToOpen.push (mytable[J].src); //-- Add URL to list
}
openLinksInSequence ();
};
function openLinksInSequence () {
if (mywin2) {
mywin2.close ();
mywin2 = null;
}
if (linksToOpen.length) {
var link = linksToOpen.shift ();
mywin2 = window.open (link, "my_win2");
mywin2.addEventListener ('load', openLinksInSequence, false);
}
}
searchButton.addEventListener ('click', openpics, true);
//stopButton.addEventListener ('click', , true);
如何使停止按钮真正停止加载更多链接?
使用全局状态变量。像这样:
var okayToOpenLinks = true;
searchButton.addEventListener ('click', openpics);
stopButton.addEventListener ('click', stopLinkSequence);
function openpics () {
okayToOpenLinks = true;
if (linksToOpen.length === 0) {
for (var J = 0, L = mytable.length; J < L; J++) {
linksToOpen.push (mytable[J].src); //-- Add URL to list
}
}
openLinksInSequence ();
};
function stopLinkSequence () {
okayToOpenLinks = false;
}
function openLinksInSequence () {
if (mywin2) {
mywin2.close ();
mywin2 = null;
}
if (okayToOpenLinks && linksToOpen.length) {
var link = linksToOpen.shift ();
mywin2 = window.open (link, "my_win2");
mywin2.addEventListener ('load', openLinksInSequence, false);
}
}
相关文章:
- 我该如何组合这两个Greasemonkey脚本
- 我如何让jQuery使用Greasemonkey 0.8脚本(在Firefox 2上),在没有互联网的情况下使用PC
- 一些 Greasemonkey 脚本顶部的这一行是什么
- setinterval() 和 .click() 在 Greasemonkey 脚本中
- 如何测试Greasemonkey脚本,尤其是在本地网页副本上
- 如何从Greasemonkey脚本创建Firefox插件
- Greasemonkey脚本编译器显示错误
- 我如何制作一个类似GreaseMonkey的脚本,在下三分之一显示不同的页面
- 如何将 JSON 字符串中的文本替换为 Greasemonkey 的用户脚本
- Greasemonkey 可防止脚本在 Inernet 出现故障时卡住
- 如何在Twitter对话中的每个无限滚动事件上执行Greasemonkey脚本
- 在 Greasemonkey 脚本中 – 点击事件不会在 Firefox 中触发
- 在同一页面上多次运行 Greasemonkey 脚本
- 用于拦截按键的 Greasemonkey 脚本
- 使用 greasemonkey 禁用现有脚本中的焦点功能
- 如何为 Greasemonkey 脚本创建切换按钮
- 如何在 Greasemonkey 脚本中播放声音
- Greasemonkey 脚本似乎忽略了 setInterval
- Greasemonkey 脚本使用 jQuery 忽略附加到表行的元素
- 如何在网站中使用用户脚本?(Greasemonkey是如何工作的)