【发布时间】:2014-07-18 20:58:21
【问题描述】:
我在我的网站测试中使用 Syn.js,但是当我使用 Syn.click 时遇到问题,然后尝试检查事件后发生的事情,例如标题更改或不起作用的事情。
就像 onClick 事件在开始检查之后发生的事情之前并没有结束。
onClick 函数是我看不到的,所以我不能放置自定义事件来确保它结束,所以我需要一种不同的方法来做到这一点。
我需要一种方法来确保事件结束以继续到代码中的下一行而不更改事件本身。
我真的需要一个想法,因为我不知道如何继续。
它可以是 JavaScript、jQuery 等等......
//syn.js ---- this is from the syn.js (from the internet)
"_click": function (options, element, callback, force) {
Syn.helpers.addOffset(options, element);
Syn.trigger("mousedown", options, element);
//timeout is b/c IE is stupid and won't call focus handlers
schedule(function () {
Syn.trigger("mouseup", options, element);
if (!Syn.support.mouseDownUpClicks || force) {
Syn.trigger("click", options, element);
callback(true);
} else {
//we still have to run the default (presumably)
Syn.create.click.setup('click', options, element);
Syn.defaults.click.call(element);
//must give time for callback
schedule(function () {
callback(true);
}, 1);
}
}, 1);
}
// eventually it calls element.dispatchEvent(event); in syn.js
并且用户像这样使用我的应用程序(jasmin + syn + etc...)
// user code (sort off) : (doesnt work)
Syn.click({}, button);
expect(title).not.BeNull; // -------- here is the probleme the title need to be something but its not.
// user code (sort off) : (work)
Syn.click({}, button);
setTimeout(function() {
expect(title).not.BeNull;},1000); // ----------- I need to do this but not in here ( the user cant write this it looks bad----
我唯一可以更改的是 syn.js 或介于两者之间的东西,因为我不希望用户在他的代码中编写他不需要的东西。
如果用户在每个 Syn.*** 之后写一个 setTimeout,它看起来真的很难看,我不希望那样。
我也在 syn.js 中尝试了 setTimeout,但它仍然不起作用。
【问题讨论】:
-
如果您希望获得帮助,您可能需要展示一个代码示例。
-
检查:setTimeout() 函数添加延迟。
-
为了为您解决这个问题,我们需要查看绑定点击事件的代码 - 以及之后需要等待该事件完成的代码(至少)。如果您可以在 jsfiddle.net 上创建一个最小案例来重现该问题,这也将非常有助于帮助用户理解您的问题。
-
我添加了代码示例和更多关于我需要和做什么的解释,我的代码是秘密的,所以我不能真正展示它(抱歉)
标签: javascript jquery events javascript-events