js模拟点击事件

公司项目想要实现一种功能:单击一个按钮或超链接,然后会出现其他的超链接,这时要让其中的一个超链接被单击,以显示一个初始页面。(公司页面使用了frameset)很显然,之后的超链接单击事件需要通过JavaScript来触发。一开始,我想到了用jQuery的click()事件来触发超链接的单击事件(与trigger("click")一样的效果)。结果发现不如人意。实例如下:效果图IE:FireFox:Html代码<h3>请单击”ClickMe"。测试提交按钮与超链接是否也被单击了。</h3><buttonid="btn">ClickMe</button><formaction="#"><inputtype="text"name="userName"value="徐新华-polaris"readonly/><inputid="submit"type="submit"value="别点击此按钮提交"onclick="alert('触发了提交按钮的单击事件!');"/></form><aid="aLink"href="wwgoogle"onclick="alert('触发了超链接的单击事件!');">代码触发超链接</a>Javascript代码$(function(){$("#btn").click(function(){$("#submit").click();$("#aLink").click();});});当单击:ClickMe按钮时,先后弹出提交按钮被单击、超链接被单击的对话框,这表明两者的单击事件都被触发了。然而,从地址栏中可以看到,提交按钮的单击事件触发后,执行了它的默认行为:提交表单;可是超链接的单击事件触发后,并没有链接到目标地址。(不要怀疑说是提交按钮的提交地址对超链接有影响,因为我去掉提交按钮,只留下超链接也不会链接到目标地址。)也许jQuery中的click()方法对超链接的单击事件并没有使其执行浏览器的默认行为(即使你手动加入returntrue也没有用)。注意:tigger("click")与click()一样的。jQuery文档中说“这个函数也会导致浏览器同名的默认行为的执行”。同名的?不太明白,但是超链接的确不能执行它的默认行为。这是,只能想另外的方法——抛弃jQuery提供的事件。回到JavaScript自己的事件——click。代码如下:Javascript代码$(function(){$("#btn").click(function(){$("#submit").click();$("#aLink").get(0).click();});});在IE中一测试,通过了……有点兴奋。可是,在fireFox中却提示:click()不是一个function。说真的,IE浏览器提供的东西对开发人员来说很好,而fireFox却没有,比如之前说到的onpropertychange等。不过,我们必须的考虑IE之外的浏览器。在网上查资料,有不少人提到在fireFox中要用代码触发一个事件,需要如下处理:Javascript代码varevt=document.createEvent("MouseEvents");evt.initEvent("click",false,false);//或用initMouseEvent(),不过需要更多参数$("#aLink").get(0).dispatchEvent(evt);按以上方法来实现我想要的功能,代码如下:Javascript代码$(function(){$("#btn").click(function(){$("#submit").click();if($.browser.msie){$("#aLink").get(0).click();}else{varevt=document.createEvent("MouseEvents");evt.initEvent("click",false,false);$("#aLink").get(0).dispatchEvent(evt);}});});这时,在IE中是完全正常的。然而,在fireFox中的情况与直接使用jQuery的click()事件一样,能触发单击事件,超链接却没有转到目标地址(注意:提交按钮用此方法也是能够提交的,我想jQuery的click()的实现大概是这样实现的吧)。哎,觉得还是IE好。呵呵。如此一来,这种方法仍然不能解决FireFox中的问题。得继续寻找其他方法。既然在fireFox中能够触发单击事件,却不能转到超链接的目标地址,那么,可以用js来实现跳转,即:使用location对象。代码如下:Javascript代码$(function(){$("#btn").click(function(){$("#submit").click();if($.browser.msie){$("#aLink").get(0).click();}else{//绑定单击事件$("#aLink").click(function(){document.location=$(this).attr("href");//windolocation=$(this).attr("href");也可以,但是执行的时间不同});//触发单击事件$("#aLink").click();}});});这样就大功告成。有一个地方要说明一下:document.location与windolocation。这两个都可以,然而他们的执行时间不同,window的执行时间较早。读者可以自己试试。虽然实现了这个例子,然而,运用到项目中却出问题了,因为项目中使用...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?