- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 waitForKeyElement.js 时我想知道是否有一个很好的解决方案来实现最长等待时间?有时我有一些应该存在的元素,但有时在糟糕的 ajax 响应中它们不会出现,或者它们可能需要一段时间才能出现。在这种情况下,我只是希望它继续运行并执行一个单独的功能。
编辑:例如,当试图“购买”一个项目时,它通常总是以一个“成功”框作为响应,这是程序正在等待的,但是有时如果服务器有错误或者如果该项目不再可用于“购买”,在这种情况下,可能会插入一个不同的错误元素,但这是一个不同的元素,因此它继续等待而不是继续处理下一个项目。
最佳答案
该问题没有示例用例,也没有 MCVE。很有可能是 XY Problem .
也就是说,没有优雅的方法来设置最长等待时间(因为以前从来没有这种需求,也没有这种需求)。
您可以使用如下代码获得效果:
const maxTime = 5; // seconds
var watchdogTimer = setTimeout (fallBackFunc, maxTime * 1000);
waitForKeyElements ("#foo", desiredFunc, true);
function desiredFunc (jNode) {
console.log ("Foo found!");
clearTimeout (watchdogTimer);
}
function fallBackFunc () {
console.log ("Oh, poo. No foo.");
}
在这种情况下卸载 waitForKeyElements
计时器应该是不必要的,但您也可以通过在 fallBackFunc()
的末尾添加以下代码来做到这一点>:
function fallBackFunc () {
console.log ("Oh, poo. No foo.");
/*-- Optional body double to take fire from waitForKeyElements that the
has `true` parameter set. This is almost never needed.
*/
var nonce = "IdeallySomeGloballyUniqueStringThatIs_a_ValidCssClass";
//-- Added node should have properties that match the WFKE selector
$("body").append (`<span id="foo" class="${nonce}" style="display:none;">blah</span>`);
setTimeout (function () {$(`.${nonce}`).remove(); }, 333); // time must be > 300
}
关于问题编辑:
... (the page) responds with a "success" box which is what the program is waiting for, however sometimes this box does not happen... in which case a different error element may be inserted instead...
通常的做法是设置 waitForKeyElements
来监听成功节点和错误节点。 (参见 jQuery selectors doc。)
waitForKeyElementscallback 然后会根据传递给它的节点类型采取适当的操作。
不需要看门狗定时器(除非页面可以保持事件状态但不返回任何节点类型——这几乎永远不会是这种情况)。
例如:
waitForKeyElements ("#goodNode, #errorNode", completeTransaction, true);
function completeTransaction (jNode) {
if (jNode.is ("#goodNode") ) { // Match one of the WFKE selectores
console.log ("Transaction success!");
}
else {
console.log ("Transaction error.");
}
}
作为奖励,这种方法:(A) 不必等待最大计时器用完,并且 (B) 如果最大计时器没有针对每种情况设置足够长,则不会中断。
关于javascript - waitForKeyElements.js 但有最长等待时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54995070/
我正在使用waitForKeyElements在 Greasemonkey 中,但不理解这段代码: if (!alreadyFound) { //--- Call th
我一直在寻找一种方法来自动选择不同网站上包含特定单词的调查表单按钮。我在 Google Chrome 中使用 Tampermonkey 来实现此目的。在这种情况下,我想自动选择带有“男性”和“先生”一
使用 waitForKeyElement.js 时我想知道是否有一个很好的解决方案来实现最长等待时间?有时我有一些应该存在的元素,但有时在糟糕的 ajax 响应中它们不会出现,或者它们可能需要一段时间
我正在使用这个令人惊叹的脚本,waitForKeyElements() (wfke),这有助于处理用户脚本中动态加载的内容。 它做得很完美,但我在预先计算一些变量,然后在 wfke 执行时使用它时遇到
我正在使用 Greasemonkey 和 waitForKeyElements()更改网页中的某些文本。 这是单个 jNode 元素的示例。
所以我尝试使用 waitForKeyElements()函数以检测 AJAX 内容。我尝试选择的 div 在其 ID 中包含“$”(例如 ),经过多次尝试和错误后,我 90% 确定它会导致问题。该功
此代码删除了转发次数少于 3 次的推文,但现在我遇到了刷新 (AJAX) 问题。如何添加 the waitForKeyElements function修复它? $('.js-stream-item:
在我的 Greasemonkey/Tampermonkey 脚本中,它在 Google Chrome 中运行完美,但在 Firefox 中: waitForKeyElements ("table#ID
过去 3 天,我一直在学习 javascript、jQuery 和用户脚本,以及如何使用 firebug,尝试在 desk.com 网站上显示有关选定客户的信息。到目前为止,除了大量的学习之外,我没有
多年来我一直使用 waitForKeyElements()通过用户脚本跟踪网页变化的函数。然而,有时我发现它没有按预期触发并且已经解决了。我遇到了这个问题的另一个例子,所以我现在试图找出问题所在。以下
我正在使用这个在网站上运行的脚本,但我想修改它以供其他用途。是否可以使用 waitForKeyElements 函数来查找页面上的文本(而不是链接中的文本)? 这是div: You have run
Pandora AJAX 不适用于 waitForKeyElements。我花了几个小时试图找出哪里出了问题,但无法解决。 它工作一次,但在播放下一首轨道时不工作。 // ==UserScript==
下面的脚本完成了我想要它做的事情,但没有我想要的那么快。 :-) 目标始终是显示在 Google 搜索结果中点击“搜索工具”按钮时可见的搜索工具。 如果不应用计时器,我无法让 waitForKeyEl
(继续this question of mine)。 我一直在写this userscript对于网站 metal-archives.com。 打开乐队页面 ( example ) 时,您会进入 DI
我正在尝试单击 URL http://www.sparhandy.de/handy-kaufen/ 上的“Mehr Laden”按钮与篡改猴。该按钮位于智能手机图片下方。这是我到目前为止编写的脚本:
我是一名优秀的程序员,十分优秀!