2010-12-10 17 views
6

कैसे iframe जावास्क्रिप्ट का उपयोग अंदर लिंक पर उपयोगकर्ता की क्लिक के पता लगाने के लिए अंदर किसी लिंक क्लिक की जांच?जावास्क्रिप्ट: एक iframe

+2

यदि iframe एक ही डोमेन में है तो आप केवल आईफ़्रेम में जावास्क्रिप्ट जोड़ सकते हैं। – epascarello

उत्तर

3

आपको iframe लोड घटना की जांच करने में सक्षम हैं

onLoad="alert(this.contentWindow.location);" 

या jQuery पर:

$('iframe#yourId').load(function() { 
    alert("the iframe has been loaded"); 
}); 
+11

लोड हो रहा है आइफ्रेम – epascarello

+1

क्यों में एक लिंक पर एक क्लिक के पता लगाने के लिए कुछ भी नहीं है? जब आप लिंक पर क्लिक करते हैं तो iframe का स्थान बदल दिया जाएगा, इसलिए iframe लोड इवेंट को निकाल दिया जाना चाहिए। – Anton

+3

वास्तव में, यह मेरे लिए काम किया है, क्योंकि मैं फ्रेम के अंदर हर क्लिक का पता लगाने, लेकिन लिंक जो आइफ्रेम स्थान परिवर्तन के बराबर होता है पर क्लिक करने की जरूरत नहीं है। संपादित करें: मैं केवल इस उत्तर को स्वीकार करने में सक्षम हूं, किसी कारण से मतदान नहीं कर सकता (मैंने मतदान नहीं किया)। – Paul

8

आप यह मानते हुए आईडी के साथ एक iframe "myIframe" है, और iframe मुख्य दस्तावेज़ के रूप में एक ही डोमेन से आता है, निम्नलिखित दस्तावेज़ में कहीं भी एक क्लिक की पहचान करेगा। यह भी काम करेगा जब दस्तावेज है जो दस्तावेज़ के onclick संपत्ति हैं का उपयोग नहीं कर संपादन योग्य है,:

function iframeClickHandler() { 
    alert("Iframe clicked"); 
} 

var iframe = document.getElementById("myIframe"); 
var iframeDoc = iframe.contentDocument || iframe.contentWindow.document; 

if (typeof iframeDoc.addEventListener != "undefined") { 
    iframeDoc.addEventListener("click", iframeClickHandler, false); 
} else if (typeof iframeDoc.attachEvent != "undefined") { 
    iframeDoc.attachEvent ("onclick", iframeClickHandler); 
} 
+0

यह मानता है कि iframe क्रॉस डोमेन नहीं है, मुझे लगता है। – erikvold

+0

@erikvold: सही। मैंने अपने जवाब में एक नोट जोड़ा है। iframe के –