Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回的AJAX html中断IE单击事件_Javascript_Html_Ajax_Internet Explorer - Fatal编程技术网

Javascript 返回的AJAX html中断IE单击事件

Javascript 返回的AJAX html中断IE单击事件,javascript,html,ajax,internet-explorer,Javascript,Html,Ajax,Internet Explorer,我有一个分页数据表,以及一个动态创建的分页器(服务器端AJAX调用,将返回的HTML应用于div的innerHTML)。 当我单击寻呼机上的下一页时,会向服务器发送一个AJAX调用,以检索下一组数据,并以HTML字符串的形式返回。我解析HTML并呈现新表行。我还检索寻呼机HTML并将其加载到其父DIV innerHTML中。到目前为止没有问题 在Firefox中,我可以点击寻呼机,所有javascript函数都将正常执行。在IE中,我的第一次单击现在不会注册,但第二次单击将执行预期的操作 IE是

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

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


IE是如何禁止第一次点击我返回的HTML的?

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

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

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

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


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

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


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

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


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


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

页面链接的结构如何?它是内联onclick=“”还是在代码中连接?您是否验证了第一次单击不会发送服务器请求?例如在Fiddler?@Diodeus中-页面是用代码连接的-我在它的父div上设置了一个事件侦听器。父div不会被AJAX响应更改,但其中包含的分页HTML会更改@crescentfresh-很好的电话,显然数据回来了,但是点击我的电话,你可以发布这个解决方案作为你问题的“答案”,等待两天,然后接受它。。。这可能会让解决方案在独立于问题的情况下获得投票……我想指出(三年后),使用超时并不是处理这个问题的好方法。感觉设置和收听一个事件要可靠得多。然而,因为我已经不知道这个问题是关于什么的了,我就不提了。