document.defaultView
का मुद्दा क्या है?document.defaultView का बिंदु क्या है?
ब्राउज़रों में दस्तावेज़ या अशक्त कोई भी उपलब्ध करता है, तो साथ जुड़े विंडो ऑब्जेक्ट देता है।
कोड document.defaultView
की (PPK's site से) निम्नलिखित बनाता उपयोग की तरह:
function getStyle(el,styleProp)
{
var x = document.getElementById(el);
if (x.currentStyle)
var y = x.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
return y;
}
कोड इस तरह अन्य स्थानों में पाया जा सकता है, डेविड मार्क मेरी लाइब्रेरी की तरह। मुझे यकीन नहीं है कि लोग सिर्फ पीपीके या किसी अन्य स्रोत से कॉपी कर रहे हैं या स्वतंत्र रूप से इसके साथ आ रहे हैं, लेकिन मुझे यह समझ में नहीं आता है।
मेरा सवाल है, इस तरह के मामलों में document.defaultView
का उपयोग करने का क्या मतलब है?
function getStyle(element, styleProp) {
if (element === ''+element) element = document.getElementById(element);
return element.currentStyle ? element.currentStyle[styleProp] :
getComputedStyle(x,null).getPropertyValue(styleProp);
}
क्या document.defaultView.getComputedStyle
कि window.getComputedStyle
या बस getComputedStyle
नहीं है क्या करता है: यह इस प्रकार के रूप में इस लिखना आसान नहीं होगा?
cwolves के जवाब ने मुझे सही दिशा में सोचने लगा। मूल कार्य मूर्खतापूर्ण है, defaultView
का बिंदु गुम है। मेरा प्रस्ताव कम मूर्खतापूर्ण है, लेकिन defaultView
का बिंदु भी गुम है। यहां मेरा नया प्रस्ताव है:
function getStyle(element, styleProp) {
var view = element.ownerDocument && element.ownerDocument.defaultView ?
element.ownerDocument.defaultView : window;
return view.getComputedStyle ?
view.getComputedStyle(element,null).getPropertyValue(styleProp) :
element.currentStyle ?
element.currentStyle[styleProp] : null;
}
तत्व स्वयं आईडी में नहीं होना चाहिए, आईडी नहीं। मुझे लगता है कि यह शायद वैसे भी पसंद किया जा सकता है। यह दस्तावेज नोड युक्त है, और इसके साथ जुड़े खिड़की। ownerDocument
या defaultView
टूटा हुआ है (मुझे अस्पष्ट getComputedStyle
defaultView
से पहले होने पर) वर्तमान विंडो के getComputedStyle
पर फ़ॉलबैक है। यह शायद defaultView
के इच्छित उपयोग के करीब है।
तो होगा शब्दों का एक और तरीका का उपयोग कर सकता है कि हो, यह केवल तभी उपयोगी होगा जब आपके पास दस्तावेज़ से जुड़े विंडो/ग्लोबल में पहले से कोई संभाल नहीं है? –
जरूरी नहीं - जैसा कि मैंने कहा था, आपके पास कई अलग-अलग दस्तावेज़ (iframes) हो सकते हैं, इसलिए यह उस विशिष्ट विंडो का एक लिंक है (उदा। 'Iframe.contentWindow' बनाम' विंडो' बनाम 'iframe2.contentWindow')। एक दस्तावेज़ को भी चारों ओर स्थानांतरित किया जा सकता है, इसलिए यदि आप उस मूल लिंक को स्टोर करते हैं तो भी यह बदला जा सकता है। मेरा मानना है कि, 'दस्तावेज़' –
से 'वर्तमान विंडो' को संदर्भित करने का एक सुरक्षित तरीका आप सही हैं। फ़ंक्शन को कैसे देखना चाहिए इसके लिए प्रश्न को नए प्रस्ताव के साथ अपडेट करना। –