我有一个分页数据表,以及一个动态创建的分页器(服务器端AJAX调用,将返回的HTML应用到div的innerHTML)。 当我在寻呼机上单击下一页时,会向服务器发送一个AJAX调用以检索下一组数据,该数据将作为HTML字符串返回。我解析HTML并呈现新的表行。我还检索寻呼机HTML并将其加载到其父DIV innerHTML中。到目前为止没问题。
在Firefox中,我可以点击寻呼机,我的所有javascript函数都会正常执行。在IE中,我的第一次点击现在不会注册,但第二次点击将执行预期的操作。
IE禁止首次点击我返回的HTML有什么用?
答案 0 :(得分:1)
我不确定你的问题是否与我使用回发遇到的问题有关,但是我使用的一些AJAX库是在页面中插入额外的控件并导致我链接中生成的ID不再匹配最多为服务器对回发事件的预期ID。
事件正在触发,但是当事件被连接时,点击链接和收听者所期望的链接对象之间的ID不匹配。
然而,在第一次点击后,回发会导致ID重新同步,然后第二次点击就可以匹配ID。
我发现这种方式的方法是在第一次点击之前和之后检查链接中的ID。
同样,我不确定这是发生在你身上的事。症状类似,但在我的情况下,Firefox和IE都失败了。希望这很有用。
答案 1 :(得分:1)
原来我有竞争条件。在我从服务器获得响应之前,库(内部编码)正在调用我的回调函数。因此,我的回调函数都没有做任何事情,因为我没有传递有效值。我设置了一个循环来检查一个值每十毫秒,否则等待。我从这里修改了教程:
http://wonko.com/post/how-to-prevent-yui-get-race-conditions
答案 2 :(得分:0)
您的寻呼机超链接是否为“{”作为href
并且您的JavaScript onclick事件处理程序返回false
?
我之前在IE中看到了这个问题,如果你没有从事件处理程序返回false
,那么第一次点击将跟随超链接(返回同一页面),但后续点击将起作用,因为该页面已被访问过。
答案 3 :(得分:0)
如果您遇到竞争条件,您可能需要认真重新考虑您的方法,而不是设置计时器。
分页数据是一系列类似格式的项目吗?您可能需要考虑退回到DOM级别,删除容器的子元素并在DOM中重建它们。在我的分页脚本上,我请求一个JSON字符串,然后由请求页面解析。结果是一个对象数组,我可以循环并添加到容器中。它还有助于降低脚本注入的可能性(在处理任何类型的用户提供的内容时,innerHTML非常危险。)