代码之家  ›  专栏  ›  技术社区  ›  Mike Robinson

返回Ajax HTML中断IE单击事件

  •  2
  • Mike Robinson  · 技术社区  · 16 年前

    我有一个分页数据表,以及一个动态创建的分页器(服务器端的Ajax调用,将返回的HTML应用到DIV的innerhtml)。 当我单击寻呼机上的下一页时,会向服务器发送一个Ajax调用,以检索下一组数据,这些数据作为一个HTML字符串返回。我解析HTML并呈现新的表行。我还检索了寻呼机HTML并将其加载到其父DIV InnerHTML中。到目前为止没有问题。

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

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

    4 回复  |  直到 15 年前
        1
  •  1
  •   Jay S    16 年前

    我不确定您的问题是否与我遇到的回发有关,但是我使用的一些Ajax库在页面中插入了额外的控件,导致我的链接中生成的ID与服务器预期的回发事件的ID不再匹配。

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

    但是,第一次单击后,回发将导致ID重新同步,第二次单击将能够匹配ID。

    我发现这一点的方法是在第一次单击前后检查链接中的ID。

    再说一次,我不确定这是发生在你身上的事情。症状类似,但在我的例子中,火狐和IE都失败了。希望这是有帮助的。

        2
  •  1
  •   Mike Robinson    16 年前

    结果发现我有种族问题。在我收到服务器的响应之前,库(内部编码)正在调用我的回调函数。因此,我的回调函数都不做任何事情,因为我没有传递有效的值。我已经设置了一个循环,每隔10毫秒检查一个值,否则等待。我从这里修改了教程:

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

        3
  •  0
  •   John Topley    16 年前

    您的寻呼机超链接是否有“”作为 href 您的javascript onclick事件处理程序是否返回 false ?

    我以前在《如果你不回来》中看到过这个问题 在事件处理程序中,第一次单击将跟随超链接(返回到同一页),但随后的单击将起作用,因为该页已被访问。

        4
  •  0
  •   Ry Biesemeyer    16 年前

    如果你有一个比赛条件,你可能需要认真地重新考虑你的方法,而不是设置一个计时器。

    分页数据是否是一系列格式类似的项目?您可能需要考虑返回到DOM级别,切除容器的子元素并在DOM中重建它们。在分页脚本上,我请求一个JSON字符串,然后由请求页解析该字符串。结果是一个对象数组,我可以循环并将其添加到容器中。它还有助于减少脚本注入的可能性(innerhtml在处理任何类型的用户提供的内容时都是众所周知的危险)。