2012-09-16 18 views
10

मैं सोच रहा था कि अगर कोई यह जांचने के लिए कैसे जांचता है कि आईफ्रेम में सामग्री बह रही है और स्क्रॉलबार दिखाई दे रहे हैं या नहीं?यह देखने के लिए जांचें कि क्या आईफ़्रेम में स्क्रॉलबार दिखाई दे रहे हैं?

धन्यवाद

उत्तर

2

आप अगर तत्व के scrollHeightclientHeight से अधिक है की जांच करना चाहते हैं, या अगर तत्व के scrollWidthclientWidth से अधिक है। यह सीधे उन गुणों के साथ किया जा सकता है, या jQuery द्वारा प्रदान की गई सहायक विधियों का उपयोग करके किया जा सकता है।

MDN: element.scrollHeight

If the element's content generated a vertical scrollbar, the scrollHeight value is equal to the minimum clientHeight the element would require in order to fit all the content in the viewpoint without using a vertical scrollbar. When an element's content does not generate a vertical scrollbar, then its scrollHeight property is equal to its clientHeight property. This can mean either the content is too short to require a scrollbar or that the the element has CSS style overflow value of visible (non-scrollable).

+0

इस विधि की आवश्यकता है कि iframe की सामग्री एक ही सर्वर पर होस्ट किया है, या इसे क्रॉस-डोमेन हो सकता है? – Olokoo

+0

यह या तो हो सकता है क्योंकि iframe तत्व आपके डोमेन में है। सामग्री (जरूरी नहीं) है, लेकिन सामग्री आखिरकार आईफ्रेम की स्क्रॉल को परिभाषित करने जा रही है और स्क्रॉल हाइट और अन्यथा कोई फर्क नहीं पड़ता। – jimp

+7

मैंने कोशिश की, और यह काम नहीं किया, मुझे दोनों के लिए एक ही परिणाम मिलता है, और वे तत्व की ऊंचाई दोनों हैं। \t \t फ़ंक्शन चेकस्क्रॉल() { \t \t \t var intElemScrollHeight = document.getElementById ('websiteView')। ScrollHeight; \t \t \t var intElemClientHeight = document.getElementById ('websiteView')। क्लाइंट हाइट; \t \t \t अलर्ट (intElemScrollHeight); \t \t \t अलर्ट (intElemClientHeight); \t \t} – Olokoo

1

सामान्य रूप में आप तत्व की scrollHeight/scrollWidth और offsetHeight/offsetWidth के डेल्टा तुलना करनी चाहिए। यदि सकारात्मक है तो 'हमें विजेता मिला'। लेकिन .. जब एक iframe में स्क्रॉलबार की तलाश में, चीजों को एक छोटे से थोड़ा जटिल काम मिलता है:

var frm=document.getElementById("frm"); 
var iIsVrScrollBar = frm.contentWindow.document.documentElement.scrollHeight>frm.contentWindow.document.documentElement.offsetHeight ? 1 : 0; 
var iIsHrScrollBar = frm.contentWindow.document.documentElement.scrollWidth>frm.contentWindow.document.documentElement.offsetWidth ? 1 : 0; 
+1

आपको यह जोड़ना चाहिए कि यह केवल तभी काम करता है जब iframe src उसी पृष्ठ से आता है जो इसे होस्ट करने वाले वेब पेज के रूप में होता है। एक उदाहरण त्रुटि होगी: "असीमित सुरक्षा त्रुटि: मूल के साथ एक फ्रेम को अवरुद्ध" http: // ... "मूल के साथ फ्रेम तक पहुंचने से" https: // ..... "।फ्रेम अनुरोध करने के लिए "http" का प्रोटोकॉल होता है, जिस फ्रेम तक पहुंचा जा रहा है उसका "https" का प्रोटोकॉल होता है। प्रोटोकॉल मेल खाना चाहिए। – gae123

0

मैं यह काम करने के लिए प्राप्त करने के लिए कोड को संशोधित करने के लिए किया था।

1) IFRAME & सामग्री पर एक ही वेबसाइट/फ़ोल्डर संरचना

2) प्रक्रिया सही

3 करने के लिए "sizewindow" सेटिंग ने उकसाया है) यह झलकी एक टाइमर समारोह सेट का भाग है anout 0.5 सेकंड

4) IE11 पर परीक्षण किया, FF34 & 35, क्रोम 31 & 40, & ओपेरा 12,6

5) सक्रिय ग पर स्तोत्र केवल सामग्री की तुलना में बड़ा करने के लिए खिड़की आकार,

देख http://www.users.waitrose.com/~cresby/map2.htm

if (sizewindow){ 
    if(iIsVrScrollBar==1) { 
    frm.style.height = (frm.contentWindow.document.body.offsetHeight+20); 
    iIsVrScrollBar = (frm.scrollWidth!=frm.contentWindow.document.documentElement.scrollWidth) ? 1 : 0; 
    if(iIsVrScrollBar==0) sizewindow=false; 
}else{ 
    frm.style.height = (frm.contentWindow.document.body.offsetHeight-10); 
    iIsVrScrollBar = (frm.scrollWidth!=frm.contentWindow.document.documentElement.scrollWidth) ? 1 : 0; 
    if(iIsVrScrollBar==1) {frm.style.height = (frm.contentWindow.document.body.offsetHeight+10);} 
} 
} 
संबंधित मुद्दे

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