jquery 和浏览器假点击
Posted
技术标签:
【中文标题】jquery 和浏览器假点击【英文标题】:jquery and browser fake clicking 【发布时间】:2011-11-18 15:11:35 【问题描述】:我知道浏览器不支持虚假点击。我知道我可以回去并开始重构所有突兀的 javascript……但这不会发生。话虽这么说......
事情就是这样。
我有一堆代表偏好的链接。 EX:(这是渲染的内容。下面创建这个的实际jsp看起来并不有趣。)
<table id="snTabsAvail" class="content" cellspacing="5" cellpadding="1" border="0" align="center">
<tbody>
<tr>
<td id="Serial Number_Engine Test_0" class="tbutton" nowrap="" style="background-color:lime">
<a href="javascript:tabToggle('Serial Number', 'Engine Test', spref, 0, tabPicked, tabAvailable, 'Failed to update your tab preference, please try again later'); ">
</td>
<td id="Serial Number_Machine Test_1" class="tbutton" nowrap="" style="background-color:lime">
<a href="javascript:tabToggle('Serial Number', 'Machine Test', spref, 1, tabPicked, tabAvailable, 'Failed to update your tab preference, please try again later'); ">
</td>
...
这些调用代表 Ajax 调用,它们在服务器上设置首选项。我想包括一个全选和一个取消全选,所以我不必单独单击所有这些。我知道我不能这样做
$('#snTabsAvail td[style=background-color:silver] a').click();
由于虚假点击问题。
由于这些点击代表 javascript ajax 调用,我试图弄清楚如何点击我想要选择的那些,取消选择。链接所在的单元格代表“选项卡”,您可以通过它们的背景颜色判断哪些单元格被选中...这就是为什么我说,此表中任何具有未选择背景颜色的单元格,获取锚点,然后单击,这是行不通的。
关于如何在这里获取所有锚点并假点击它们有什么想法吗?是的..我的意思是编程。
【问题讨论】:
据我所知,我们可以用.click()
模拟鼠标点击。您的意思是因为有 >1 个链接对象而无法正常工作吗?或者,因为点击触发了 AJAX 调用?
你不能用 jquey .click() 它们:问题是你不能通过点击触发链接的默认操作。见:forum.jquery.com/topic/jquery-a-0-click-not-working
【参考方案1】:
您可以在每个链接的 href 属性上使用 eval()(不确定是否必须删除“javascript:”部分),如下所示:
eval($('#snTabsAvail a').attr('href').substring(11));
编辑:当然这是针对单个链接的,您必须遍历 $('#snTabsAvail a') 返回的元素以获得完整的解决方案。
【讨论】:
这很有用,但我尝试将它们从锚点更改为基本上聚合一堆 javascript 函数,然后执行,但问题是 IE 没有同时更新 dom (或排队)ajax 以我想要的方式调用。我最终得到了一堆以编程方式“点击”的“选项卡”。但是 dom 从未更新,因此这些更改在 ui 中很明显。一旦我回到这个问题上,我将不得不重新考虑解决方案。以上是关于jquery 和浏览器假点击的主要内容,如果未能解决你的问题,请参考以下文章