कैसे IFRAME माता पिता के रूप में एक ही घटनाओं को सुनने के लिए प्राप्त करने के लिए (और एक ही हैंडलर सक्रिय करें)

वोट
0

मैं एक एम्बेडेड IFRAME के ​​साथ एक HTML पृष्ठ (पैरेंट) मिल गया है। पैरेंट पृष्ठ माउस और कीबोर्ड की घटनाओं के लिए घटना श्रोताओं के एक जोड़े, के रूप में (मैं प्रोटोटाइप पुस्तकालय का उपयोग कर रहा) नीचे दिखाया गया है।

var IdleMonitor = Class.create({

    active: null,
    initialize: function(ii) {
        Element.observe(window, mousemove, this.sendActiveSignal.bind(this));
    },

    sendActiveSignal: function() {
        console.log(MOUSE);
    }
});

var idleMonitor = new IdleMonitor();

IFRAME, एक अलग दस्तावेज़ और सभी जा रहा है, माता पिता की घटनाओं का जवाब नहीं है। इसलिए मैं IFRAME में कुछ कोड को सेट कर लेने की तरह:

<script type=text/javascript >

        Element.observe(window, mousemove, function(p) {
            parent.sendActiveSignal();

        });
</script>

लेकिन है कि मुझे (sendActiveSignal एक अपरिभाषित समारोह है) एक त्रुटि दे रही है। मैं कैसे IFRAME भी और माता-पिता के ईवेंट हैंडलर्स आग, अधिमानतः एक प्रोटोटाइप-y तरह से एक ही घटनाओं के लिए सुनने कर सकता हूँ?

15/06/2009 को 19:45
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
2

सबसे पहले, मैं वास्तव में लगता है कि आप bindAsEventListener का उपयोग करना चाहिए जब घटना श्रोताओं के रूप में कार्य बंधन। कि ऐसा करके, आप घटना के तर्कों की पहुंच है। आप इसे बाद में पड़ सकता है।

आपके मामले में, पहली बात मैंने देखा है कि आपके sendActiveSignal आप के एक सदस्य के रूप में वर्ग IdleMonitor घोषित किया जाता है है। जे एस इंजन इसे खोजने नहीं होगा अगर आप सिर्फ parent.sendActiveSignal द्वारा यह कहते हैं, क्योंकि मेरा अनुमान है कि यह है कि माता-पिता एक IdleMonitor उदाहरण नहीं है। (और यह नहीं है, मैं अभी यह बता सकते हैं:])

अपने iframe के भीतर, आप idleMonitor चर तक पहुँचने के लिए है, और आप ऐसा कर सकते हैं यह इस तरह का हवाला:

<script type="text/javascript">
Element.observe(window, "mousemove", function(p) { parent.document.idleMonitor.sendActiveSignal(); });
</script>

यह काफी काम करना चाहिए, मैं अभी परीक्षण नहीं कर सकते।

15/06/2009 को 20:14
का स्रोत उपयोगकर्ता

वोट
0

पता चला है कि यह सिर्फ iframe तत्व, जैसे की contentDocument संपत्ति का उपयोग कर माता पिता से बच्चे iframe उपयोग करने के लिए बहुत आसान है

document.observe("dom:loaded", function() {

    Element.observe($('id-of-iframe').contentDocument, "mousemove", function() {
      // call whatever...
    });
});
16/06/2009 को 00:57
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more