如何预先计算在waitForKeyElements()回调中使用的东西
How to pre-calculate stuff for use in a waitForKeyElements() callback?
我正在使用这个惊人的脚本,waitForKeyElements() (wfke),它有助于处理用户脚本中动态加载的内容。
它做了一个完美的工作,但是我有很多麻烦预先计算一些变量,然后在wfke执行时使用它。
基本上,对于一个节点列表,它正确地运行了数百次,所有节点都被立即加载(在页面加载之后)。但是我不能为列表中的每一项创建昂贵的变量和做昂贵的计算。所以我尝试在wfke函数之外做这些。
正如你在下面的例子中看到的,我尝试了两种不同的方法来预先设置变量"icons",但都不起作用。我猜这可能是@require
脚本的一个特性?复制粘贴脚本到我的主脚本修复问题?这是唯一的办法吗?
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
var icons = $('some stuff');
//Run for every BOX element that gets loaded by ajax
waitForKeyElements(".box", main);
function main(jqnode){
if (typeof icons === 'undefined') { //icons is undefined here, and will be again the next time this function is run.
var icons = $('some stuff');
}
jqnode.append(icons);
}
在Chrome中,Tampermonkey (beta)
参考JavaScript的作用域和提升以及"惊讶全局变量在JavaScript中有未定义的值"。
当你这样做的时候:
var icons = $('some stuff');
在函数main()
范围内的任何,它创建了一个局部变量,用于代替全局变量。在执行if()
语句时,这个函数作用域变量是未定义的。
这个问题也不清楚;我假设你想复制图标到所有.box
节点?代码目前的结构是只有一组图标,并将它们移动到.box
最后出现的地方。
如果你想要一个副本,使用jQuery的.clone()
方法。比如:
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
var icons = $('some stuff');
//Run for every BOX element that gets loaded by ajax
waitForKeyElements (".box", main);
function main (jqnode){
jqnode.append (icons.clone () );
/*-- Or use this to copy event handlers, but should be using
`.on()` instead, anyway.
jqnode.append (icons.clone (true) );
*/
}
如果这不是你想要的,说明并指定。
相关文章:
- AngularJS:我可以跳过函数参数回调吗
- 要求未定义JS回调参数
- MeteorJS:在带有回调的vzaar api上正确使用wrapAsync
- 自引用回调
- 测试Angular Service解决错误回调中的promise
- 如何将一个JavaScript函数回调为多个函数
- JavaScript回调函数
- 用于回调的javascript参数
- 将json回调数据转换为日期
- 承诺在非节点式回调上使用Bluebird
- 如何在回调函数中执行流
- 使用reactjs setState回调获取上一个输入值的计算值
- 为什么这个带有对象调用函数的Javascript setInterval在传入回调时不计算内部参数
- Node.JS- R,Python大量计算识别回调何时返回并存储该结果
- 如何预先计算在waitForKeyElements()回调中使用的东西
- 为什么要计算回调
- 记录使用异步回调计算的总价值
- 计算节点/ JavaScript MySQL回调中的错误实例
- Express:如何计算路由回调
- 为什么在使用 jQuery.get() 的 ajax 调用的回调函数中计算 DOM 时为 null