[小Tip]IE9中focus執行順序差異
提醒:本文最後更新於 2375 天前,文中所描述的資訊可能已發生改變,請謹慎使用。
以下程式碼,點test2後,firefox、chrome、opera輸出順序是1、2,但IE9的順序卻是2、1。
<input id="test1" /> <button id="test2">click</button> <div id="out"></div>
<script type="text/javascript">
var test1 = document.getElementById('test1'),
test2 = document .getElementById('test2'),
out = document.getElementById('out');
test1.addEventListener('focus', function(e) {
out.innerHTML += '1<br />';
});
test2.addEventListener('click', function() {
test1.focus();
out.innerHTML += '2<br />';
});
</script >
PS,如果把test1.focus()換成下面這樣,則所有瀏覽器表現一致,都是1、2這樣的順序:
var evt = document.createEvent('Events');
evt.initEvent('focus', true, true, document.defaultView);
test1.dispatchEvent(evt);
從表面上來看,IE9中的test1.focus()這個過程被非同步執行了。解決方案倒是很簡單,把後面的語句放在萬能的setTimeout 0裡就萬事大吉了。
團隊的郝同學在使用QWrap的valid元件時踩到這個坑了。先記錄下來,稍後做一些詳細研究,有結論了再更新。
--EOF--
發表於 2012-07-10 17:44:37 ,並被新增「 IE 、 IE9 、 Event 」標籤 。檢視本文 Markdown 版本 »
提醒:本文最後更新於 2375 天前,文中所描述的資訊可能已發生改變,請謹慎使用。
相關推薦
[小Tip]IE9中focus執行順序差異
提醒:本文最後更新於 2375 天前,文中所描述的資訊可能已發生改變,請謹慎使用。 以下程式碼,點test2後,firefox、chrome、opera輸出順序是1、2,但IE9的順序卻是2、1。 <input id="test1" /> <button id="test2">
Spring框架中InitializingBean執行順序
ans .com 構造函數 tar start bean 復制代碼 init auth 本文轉自:https://www.cnblogs.com/yql1986/p/4084888.html package org.test.InitializingBean; 2
JavaScript在頁面中的執行順序(理解聲明式函數與賦值式函數) 轉載
AD TE 我們 行動 first FN 順序 而且 編譯性語言 JavaScript在頁面中的執行順序 https://blog.csdn.net/superhoy/article/details/52946277 2016年10月27日 15:38:52 閱讀數:
Java 基礎:繼承中的執行順序
類的方法 主程 rgs 這一 over print 類繼承 方法 www. 1.單獨的父類測試 Java中,new一個類的對象,類裏面的靜態代碼塊、非靜態代碼、無參構造方法、有參構造方法、類的一般方法等部分, 它們的執行順序相對來說比較簡單,用程序也很容易驗證。 比如
【分析】淺談C#中Control的Invoke與BeginInvoke在主副線程中的執行順序和區別(SamWang)
info start result 初步 總結 inter blank rap 傳遞 今天無意中看到有關Invoke和BeginInvoke的一些資料,不太清楚它們之間的區別。所以花了點時間研究了下。 據msdn中介紹,它們最大的區別就是BeginInvoke屬於
多個css檔案在同一個html中的執行順序2
1、檔案位置在head裡面引入,無 !important 時 或 檔案位置在body裡面引入,無 !important 時 按照從上到下的順序依次執行,同一樣式會選擇最後一個檔案裡面的渲染[就近原則]。
類中程式碼執行順序 及 組合
一 類的名稱空間: 類中的程式碼在什麼時候執行的? 在例項化之前,也就是說在建立一個類時,類自己先給自己建立 建一塊空間,也就是公共的空間.(裡面會把靜態變數和__init__及方法方進去) 類中程式碼執行順序:(在例項化之前就執行了) 問題:一個類中可不可以沒有__i
DQL中的執行順序詳解
引言 這不是一個什麼多深的技術問題,多麼牛叉的程式設計能力。這跟一個人的開發能力也沒有非常必然的直接關係,但是知道這些會對你的SQL編寫,排憂及優化上會有很大的幫助。它不是一個複雜的知識點,但是一個非常基礎的SQL根基。不瞭解這些,你一直用普通水泥蓋
一.js高階(6)-閉包-定時器-js中程式碼執行順序
閉包1:巢狀的兩個作用域中 內層作用域訪問外層作用域 區域性變數的 過程 閉包2 : 就是能夠訪問其他函式內部變數的函式; 由於js中只有函式內部的子函式才能訪問區域性變數,所以可以簡單的把閉包理解為"定義在哈拿書內部的函式"; 本質上閉包就是連線函式內部和外部的一座橋樑;
reactnative中父子元件中component執行順序
test1.js import React, { Component } from 'react'; import { View, } from 'react-native'; import Test2 from "./Test2"; export
java 繼承中程式碼執行順序(個人見解)
面試題 以下程式碼執行結果 public class Test { class Super{ int flag=1; Super(){ test(); } void test(){
finally在try和catch塊以及return中的執行順序
執行順序 無catch時 finally會在try包含的return之後執行,會在try外面的return之前執行 當有catch時 finally是在catch執行之後catch包含的return之前執行的 執行順序圖
web-fragment 中的執行順序
最近在一個decouple的專案中引入了web-fragment.xml, 遇到了一些問題,比較好玩,記錄下。 web-fragment.xml 是servlet 3.0 以後引入的,它也是用來提供web部署描述的,功能上跟web.xml是一模一樣的。不一樣的地方是web-fragme
tensorflow中更新引數順序與tf.group中操作執行順序
想手動實現Adagrad,因為Adagrad有兩部分需要更新,因為之前合併兩個initializer用過tf.group,想當然認為tf.group可能是帶順序的,所以打算把兩個update直接group起來執行,看起來省事,感覺卻會出事,覺得很可能不帶順序,所以寫了個小de
Java類中程式碼執行順序
先上程式碼: 1.程式碼片段一: /** * @author szn25 */ public class Main { static { System.out.println("main.static!"); } public static int fun
java中程式碼執行順序(靜態程式碼塊、建構函式)
1、方法、塊對應靜態和普通兩個級別,如果不產生例項,就只執行靜態部分,所有關聯類中的靜態部分總先於非靜態(例項化)部分執行。 2、靜態部分:靜態變數初始化--靜態程式碼塊--main方法。 3、非靜態部分(物件例項化過程):成員變數初始化--非靜態程式碼塊---建構函式 4、父類先於子類。靜態部分:父類靜態
【原創】Javascript在html中的執行順序
換了新的工作,需要接觸Javascript了。以前總是寫php的程式碼,對Javascript還是很不熟悉的。今天在寫程式碼的時候,發現一個問題:Javascript在html中的執行順
測試框架Unitest的執行原理,以及多個測試類中的執行順序以及簡化方法
單元測試單元測試(unit testing)是指對軟體中的最小可測試單元進行檢查和驗證。對於單元測試中單元的含義,一般來說,要根據實際情況去判定其具體含義,如C語言中單元指一個函式,Java裡單元指一個類,圖形化的軟體中可以指一個視窗或一個選單等。總的來說,單元就是人為規定的
JavaScript在頁面中的執行順序
JavaScript是一種描述型指令碼語言,它不同於java或C#等編譯性語言,它不需要進行編譯成中間語言,而是由瀏覽器進行動態地解析與執行。如果你不能理解javaScript語言的執行機制,或者簡單地說,你不能掌握javascript的執行順序,那你就猶如伯樂駕馭不了千里
【小家java】類中靜態程式碼塊、構造程式碼塊、靜態變數執行順序和繼承邏輯
相關閱讀 每篇一句 上帝給每個人都安排了幸福的一生,我們的任務就是把它走完 1、概述 誠如各位所知,java的三大特性:封裝、繼承、多型。其中繼承,是java中最有學問的一點也是最相對來說最難理解的一些東西,本文針對於此,做一些例項分析,希望能夠幫助大家