2009-01-08 58 views
2

我有一个分页数据表,以及一个动态创建的分页器(服务器端AJAX调用,将返回的HTML应用于div的innerHTML)。 当我点击我的寻呼机上的下一页时,会向服务器发送一个AJAX调用以检索下一组数据,该数据以HTML字符串形式返回。我解析HTML并呈现新的表格行。我还检索寻呼机HTML并将其加载到其父DIV innerHTML中。目前没有问题。返回的AJAX html中断IE事件

在Firefox中,我可以点击寻呼机,我所有的javascript函数都会正常执行。在IE中,我的第一次点击现在不会注册,但第二次点击会执行预期的操作。

什么是关于IE,禁用第一次点击我返回的HTML?

+0

页面链接结构如何?是内联onclick =“”还是它连接在代码中? – 2009-01-08 17:04:28

+0

您是否验证过第一次点击没有发送服务器请求?例如在小提琴手? – 2009-01-08 17:06:45

回答

1

原来我有一个竞赛条件。库(内部编码)在我从服务器获得响应之前调用我的回调函数。因此,我的回调函数都没有做任何事情,因为我没有传递有效的值。我设置了一个循环来检查每个十毫秒的值,否则等待。我修改教程从这里开始:

http://wonko.com/post/how-to-prevent-yui-get-race-conditions

1

我不确定您的问题是否与我遇到过的回发有关,但我使用的一些AJAX库是将额外的控件插入到页面中,并导致我的链接中生成的ID为no更长的时间匹配服务器为回发事件预期的ID。

事件正在触发,但是当事件被连接起来时,ID在点击链接和侦听器期望的链接对象之间不匹配。

但是,第一次点击后回发会导致ID重新同步,然后第二次点击就可以匹配ID。

我发现这种方式是通过检查链接中第一次单击之前和之后的ID。

同样,我不确定这是发生在你身上的事情。症状是相似的,但在我的情况下,Firefox和IE都失败了。希望这是有帮助的。

0

您的寻呼机超链接是否有“#”作为href,并且是您的JavaScript onclick事件处理程序返回false

我以前在IE中遇到过这个问题,如果你没有从事件处理程序返回false,那么第一次点击将跟随超链接(回到同一页面),但随后的点击将工作,因为页面有已经被访问过。

0

如果你有一个竞争条件,你可能要认真重新考虑你的方法,而不是设置定时器。

页面数据是一系列格式相似的项目吗?您可能需要考虑回到DOM级别,剪切容器的子元素并在DOM中重建它们。在我的分页脚本中,我请求一个JSON字符串,然后由请求页面进行分析。结果是一个对象数组,我可以循环并添加到容器中。它还有助于减少脚本注入的可能性(innerHTML在处理任何用户提供的内容时都是非常危险的)。