पृष्ठ पुनः लोड के बाद ऑनक्लिक ईवेंट छड़ी बनाओ

वोट
0

मैं जावास्क्रिप्ट एक और विंडो खुलती है और सभी लिंक के लिए एक क्लिक हैंडलर दर्ज किया जाता है है:

//Inside a class somewhere
this.file_browser_window = $(window.open(/filebrowser, file_browser_window,
        width=800,height=600))

Event.observe(this.file_browser_window, 'load', function (){
     //This is the event I am after
     Event.observe(this.file_browser_window, 'click', handle_click_in_browser);
}.bindAsEventListener(this));

// The Handler function
function handle_click_in_browser(evt){
   evt.stop();  

   url = evt.target.href;

   if(url && url.endsWith('.png')){
       console.log(Image clicked);
       //REMMEMBER THIS URL ON MAIN PAGE
       this.close();
   }
   else{
       console.log(Regular stuff clicked, this);
       this.location = url; //<-- THIS is the breaking point
   }
}

हालांकि, जब कि पॉप अप विंडो में कुछ लिंक, जब पृष्ठ पुनः लोड, मेरे क्लिक संचालकों चले गए हैं पर उपयोगकर्ता क्लिक करता है!

एक ही डोमेन के लिए पॉप अप विंडो बिंदु में लिंक।

अब, मैं पॉपअप विंडो पर स्रोत (html) को बदल नहीं सकते । मैं करने की जरूरत है पकड़ने के लिंक-टैग के href (अगर यह छवि के लिए कहते हैं) है कि उपयोगकर्ता ने क्लिक किया।

मैं चला रहा हूँ Django-समझते पॉप अप विंडो में अगर कोई रुचि रखता है।

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


2 जवाब

वोट
0

आप पॉपअप पेज के भीतर ही, पॉपअप पेज के लिए अपने क्लिक करें घटना संचालकों को लागू करने दिया जाना चाहिए। मैं इन ईवेंट हैंडलर्स के लिए माता-पिता खिड़की जिम्मेदार बनाने के लिए किसी भी कारण नहीं दिख रहा है।

07/07/2009 को 15:23
का स्रोत उपयोगकर्ता

वोट
1

आप एक नया पॉप अप विंडो में पर एक iframe के भीतर अपने मानते हुये पेज डालकर समस्या के समाधान करने में सक्षम हो सकता है। मैं इस कोड को संपादित करने के लिए वापस आ सकते हैं, लेकिन अब यहाँ के लिए है कि आप करने के लिए शुरू कर दिया हो सकता है कुछ कोड (शायद के रूप में-काम नहीं करेगा - परीक्षण के बिना यह कर) है

== पृष्ठ आप से पॉपअप लॉन्च कर रहे हैं ===========

// some code to launch the file browser wrapper popup
var file_browser_popup = $(window.open("/new_wrapper_page.html", "file_browser_popup",
                "width=800,height=600"));

== अंदर new_wrapper_page.html===========

<html>
<head>
<script type="text/javascript">
// most of your existing code stays the same, but things are moved around

function listenForClicks() {
    var ifrm = $('filebrowser_iframe');
    var content = (ifrm.contentWindow ? ifrm.contentWindow.document : (ifrm.contentDocument ? ifrm.contentDocument : null));
    if (content) {
        //This is the event I am after
        Event.observe(content, 'click', handle_click_in_browser);
    }

}

// The Handler function
function handle_click_in_browser(evt){
   evt.stop();  

   url = evt.target.href;

   if(url && url.endsWith('.png')){
       console.log("Image clicked");
       //REMEMBER THIS URL ON MAIN PAGE
       parent.close();
   }
   else{
       console.log("Regular stuff clicked", this);
       parent.location = url; //<-- THIS is the breaking point
   }
}
</script>
</head>
<body>
<iframe id="filebrowser_iframe" src="/filebrowser/" width="800" height="600" onload="listenForClicks();"/>
</body>
</html>

वैसे भी, इसके साथ खेलने के लिए कुछ न कुछ है। यदि आप और अधिक दिशा की जरूरत है मुझे पता है - मेरी प्रोटोटाइप कौशल कमजोर कर रहे हैं और मैं केवल अपने मौजूदा कोड का उपयोग कर रहा यह पता लगाने की बिल्कुल तुम क्या करने की कोशिश कर रहे हैं ...

07/07/2009 को 16:44
का स्रोत उपयोगकर्ता

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