2011-03-09 10 views
6

बाहर तत्वों क्यों करता document.elementFromPoint(500,1000)here वापसी अशक्त है कि पिक्सेल दिखाई देने वाले दस्तावेज़ जब दस्तावेज़ लोड होने के बाहर स्थित है के लिए अशक्त वापसी करता है?क्यों document.elementFromPoint दिखाई देने वाले दस्तावेज़

मैंने देखा है कि document.elementFromPoint किसी भी बिंदु के लिए प्रारंभिक रूप से दिखाई देने वाले दस्तावेज़ के साथ शून्य के साथ वापस आता है, साथ ही साथ इसे देखने के बाद भी स्क्रॉल किया जाता है।

इस परीक्षण करने के लिए एक आसान तरीका क्रोम में है (Ctrl-Shift-मैं -> स्क्रिप्ट -> 'घड़ी अभिव्यक्ति') (सुनिश्चित करें कि पृष्ठ ऊंचाई 1000 पिक्सेल से कम करने के लिए संकुचित है)

संपादित करें: तो यह समझ पड़ता है के रूप में प्रति docs

  1. हमेशा दिखाई क्षेत्र के बाहर अंक के लिए अशक्त देता है,
  2. x और y दिखाई स्क्रीन के ऊपर छोड़ दिया और सही के सापेक्ष हैं

मैं दोनों मान्यताओं पर विफल रहा है,

उत्तर

2

यह भावना है कि यह कोई तत्व देता है जब आप खिड़की के बाहर एक बिंदु निर्दिष्ट करता है। यह उन तत्वों को लौटाता है जो उस बिंदु पर दिखाई दे रहे हैं, तत्वों के नहीं जो खिड़की के अलग आकार के होते हैं वहां दिखाई देंगे। इस बात पर विचार करें कि खिड़की के आकार को बदलने से तत्वों को स्थानांतरित किया जा सकता है, इसलिए यदि आप उस बिंदु पर प्रदर्शित होने वाले तत्वों को वापस कर सकते हैं तो आपको लगातार जवाब नहीं मिलेगा।

भले ही आप विंडो में सामग्री को कैसे स्क्रॉल करते हैं, विंडो के बाहर एक बिंदु अभी भी खिड़की के बाहर है।

+0

तो क्यों यह शून्य वापसी होती है जब आप उस बिंदु तक स्क्रॉल करें, इसे प्रस्तुत करना? – Joel

+0

मोज़िला दस्तावेज़ों के मुताबिक बाहरी दृश्यमान सीमाओं के दौरान इसे शून्य वापस करना चाहिए, मुझे अभी भी यह नहीं पता है कि यह दृश्य में स्क्रॉल होने पर अभी भी शून्य क्यों लौटाता है। https://developer.mozilla.org/en/DOM/document.elementFromPoint – Joel

38

तो आपने थोड़े से अपने प्रश्न का उत्तर दिया: document.elementFromPoint दस्तावेज़ के बजाय व्यूपोर्ट समन्वय में काम करता है। तो आपको स्क्रॉल मुआवजे को जोड़ने की ज़रूरत है।

निम्नलिखित कोड मेरे लिए बाहर काम किया:

document.elementFromPoint(X - window.pageXOffset, Y - window.pageYOffset); 

या यदि आप एक घटना के लिए सुन रहे हैं कि हो सकता है:

document.elementFromPoint(e.pageX - window.pageXOffset, e.pageY - window.pageYOffset); 
+5

अगर मैं केवल इस +100 को ऊपर उठा सकता हूं। धन्यवाद दोस्त। –

+0

मुझे यह Google पर मिला! यह वही है जो मैं खोज रहा था! बहुत बहुत धन्यवाद: डी –

+0

धन्यवाद एंटोन! आपने दिन बचाया :) – chriscrossweb

संबंधित मुद्दे

 संबंधित मुद्दे