您的直接答案是:將srcElement
更改爲target
。 Mozilla開發者網絡是一個很好的(很多)資源之一,用於檢查標準符合性。 A visit to their site對於srcElement
表示它是非標準的,並以正確的方式提出建議(target
)。
不幸的是,即使是標準的API也不一定適用於所有瀏覽器。通常,一個標準的部分被實現了piecemail。使用權威來源進行檢查對於瞭解哪些地方支持至關重要。
其他資源:
至於你明確的問題:
「我的問題是,有沒有更‘正確’的方式來訪問這些數據,會爲所有瀏覽器中工作,或者我需要檢查我是什麼瀏覽器,並根據瀏覽器訪問一個不同的方式信息正在使用?」
使用標準和檢查支持(通過我上面提供的資源)必須在跨瀏覽器代碼的最好機會。
不寫檢查瀏覽器類型和版本,看看你的代碼將運行(瀏覽器檢測)的代碼,因爲:
- 有太多的瀏覽器和太多的版本 - 這很爛!
- 瀏覽器可以和會騙你對他們是什麼!
使用 「功能檢測」 有疑問時。特徵檢測是評估特徵是否存在的代碼,如果存在則使用它。如果它沒有提供回退。下面是IE8(或更低)的瀏覽器很常見的一個還不支持W3C標準的事件處理:
// Here we are attempting to obtain the value of the
// addEventListener property of the window object.
// IE 8 doesn't implement this property so "undefined"
// will be returned. But, because we are attempting to
// use the value as the condition of an if/then construct
// "undefined" will be converted to a boolean. "undefined"
// is a "falsey" value, so it will convert to false.
// This means that if the else portion of our construct
// is reached, we have a browser that doesn't support
// addEventListener
if(window.addEventListener){
// W3C standards are supported - do things the standard way
obj.addEventListener("click", someFunction, capture);
} else {
// Must be IE 8 or less - do things the IE way
obj.attachEvent("onclick", someFunction);
}
這只是一個方式來使用功能檢測,但它通常取決於一個值轉換成一個布爾值。查看更多關於它here。
看看[Document.querySelector(https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector)(這也適用於HTML元素)。 – gyre