Javascript 類比點擊事件(點選連結與html點擊) 相容IE/Firefox

來源:互聯網
上載者:User

一把情況下類比點擊一般兩個方面,類比點擊超級串連事件
firefox的相容的函數為
對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');
}

下面是具體的應用
[Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]

如果是普通的html添加點擊
這一段使得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');
}

下面是網友的其它相關文章也可以參考下。
最近做東西發現使用者在網頁輸入框裡面按斷行符號的行為是不固定的。。。
特別是在網頁有多個表單的時候
於是搜了一把找了一個類比點擊的js,經測試能在firefox和ie上運行 複製代碼 代碼如下: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,內建對象,linkId是類比被點擊的對象id
比如<INPUT id="test" onkeypress="doClick("buttonId", event)">
這樣的話就能讓使用者按斷行符號來提交表單了~
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>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.