Javascript 模擬點(diǎn)擊事件(點(diǎn)擊鏈接與html點(diǎn)擊) 兼容IE/Firefox
一把情況下模擬點(diǎn)擊一般兩個(gè)方面,模擬點(diǎn)擊超級(jí)連接事件
firefox的兼容的函數(shù)為
對(duì)HTMLAnchorElement 加入onclick事件
try {
// create a element so that HTMLAnchorElement is accessible
document.createElement('a');
HTMLElement.prototype.click = function () {
if (typeof this.onclick == 'function') {
if (this.onclick({type: 'click'}) && this.href)
window.open(this.href, this.target? this.target : '_self');
}
else if (this.href)
window.open(this.href, this.target? this.target : '_self');
};
}
catch (e) {
// alert('click method for HTMLAnchorElement couldn\'t be added');
}
下面是具體的應(yīng)用
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁(yè)面才能執(zhí)行]
如果是普通的html添加點(diǎn)擊
這一段使得FireFox的HTMLElement具有click方法(add click method to HTMLElement in Mozilla)
try {
// create span element so that HTMLElement is accessible
document.createElement('span');
HTMLElement.prototype.click = function () {
if (typeof this.onclick == 'function')
this.onclick({type: 'click'});
};
}
catch (e) {
// alert('click method for HTMLElement couldn\'t be added');
}
下面是網(wǎng)友的其它相關(guān)文章也可以參考下。
最近做東西發(fā)現(xiàn)用戶(hù)在網(wǎng)頁(yè)輸入框里面按回車(chē)的行為是不固定的。。。
特別是在網(wǎng)頁(yè)有多個(gè)表單的時(shí)候
于是搜了一把找了一個(gè)模擬點(diǎn)擊的js,經(jīng)測(cè)試能在firefox和ie上運(yùn)行
function doClick(linkId, e){
if(e.keyCode != 13){
return;
}
var fireOnThis = document.getElementById(linkId)
if (document.createEvent)
{
var evObj = document.createEvent('MouseEvents')
evObj.initEvent( 'click', true, false )
fireOnThis.dispatchEvent(evObj)
}
else if (document.createEventObject)
{
fireOnThis.fireEvent('onclick')
}
}
其中e是event,內(nèi)置對(duì)象,linkId是模擬被點(diǎn)擊的對(duì)象id
比如<INPUT id="test" onkeypress="doClick("buttonId", event)">
這樣的話(huà)就能讓用戶(hù)按回車(chē)來(lái)提交表單了~
opera可以再改一下
<img id="a" src="/a.jpg" onclick="alert('a');"/><div onclick="clickObj('a')">click me</div>
<script language="javascript">
<!--
function clickObj(o){
var o = document.getElementById(o);
if( document.all && typeof( document.all ) == "object" ) //IE
{
o.fireEvent("onclick");
}
else
{
var e = document.createEvent('MouseEvent');
e.initEvent('click',false,false);
o.dispatchEvent(e);
}
}
//-->
</script>
相關(guān)文章
基于mouseout和mouseover等類(lèi)似事件的冒泡問(wèn)題解決方法
這篇文章主要介紹了關(guān)于mouseout和mouseover等類(lèi)似事件的冒泡問(wèn)題解決方法。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-11-11JavaScript中的this關(guān)鍵字介紹與使用實(shí)例
JavaScript其實(shí)一門(mén)基于或者說(shuō)是面向?qū)ο蟮恼Z(yǔ)言,這樣的話(huà),this這個(gè)關(guān)鍵字,在類(lèi)的內(nèi)部就顯得尤為重要2013-06-06js的for in循環(huán)和java里foreach循環(huán)的區(qū)別分析
這篇文章主要介紹了js的for in循環(huán)和java里foreach循環(huán)的區(qū)別,實(shí)例分析了js的for in循環(huán)使用技巧并說(shuō)明了與Java中foreach循環(huán)的使用區(qū)別,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01Js調(diào)用Java方法并互相傳參的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇Js調(diào)用Java方法并互相傳參的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08企業(yè)微信掃碼登錄網(wǎng)頁(yè)功能實(shí)現(xiàn)代碼
這篇文章主要介紹了企業(yè)微信掃碼登錄網(wǎng)頁(yè)功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01原生js實(shí)現(xiàn)鍵盤(pán)控制div移動(dòng)且解決停頓問(wèn)題
這篇文章主要給大家介紹了如何利用原生js實(shí)現(xiàn)鍵盤(pán)控制div移動(dòng),并且解決在移動(dòng)過(guò)程中的停頓問(wèn)題,文中給出了詳細(xì)的示例代碼,相信對(duì)大家的理解和學(xué)習(xí)很有幫助,下面跟著小編一起來(lái)看看吧。2016-12-12js實(shí)現(xiàn)點(diǎn)擊選項(xiàng)置頂動(dòng)畫(huà)效果
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)點(diǎn)擊選項(xiàng)置頂動(dòng)畫(huà)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08