2013-01-05 71 views
9

如果使用document.elementFromPoint(x,y),並且在提供的座標位置存在多個元素,則應該返回最頂端的元素(可視堆疊順序中的最頂層,而不是源代碼)。爲什麼document.elementFromPoint受指針事件影響:無?

如果最上面的元素在CSS中設置了pointer-events: none,則document.elementFromPoint看不到它。 This fiddle演示效果。

這是預期的行爲?看起來瀏覽器在您提供的用於查找元素的座標處觸發單擊事件(不觸發附加的點擊處理程序或默認行爲的祕密點擊事件)。有什麼方法可以看到document.elementFromPoint是如何在不同的瀏覽器中實現的? CSS屬性會影響完全不相關的DOM函數的行爲似乎很奇怪。

我只在最新的Chrome中測試過。我確信每個瀏覽器都會以不同的方式對待它。我主要對基於webkit的瀏覽器感到好奇,但總是歡迎有關其他瀏覽器的更多信息。

+0

我接受此查詢。當然,即使指針事件設置爲無,也應該可以檢測某個點下的元素。至少讓它成爲一種選擇 – sidonaldson

回答

11

The specs告訴我們元素是通過命中測試確定的,所以Chrome似乎在這裏表現得很好。其他瀏覽器可能會有所不同,但如果他們遵循規範,那麼您應該預計pointer-events會阻止它運行。

後來在規範中提到,目前W3C沒有明確定義命中測試。但是,假設他們至少使用與common use of the term類似的東西可能是安全的。

相關問題