পপআপ খুলুন এবং নিকট পপআপে পিতামাতাকে রিফ্রেশ করুন


95

আমি জাভাস্ক্রিপ্টে উইন্ডো.পেন দিয়ে একটি পপআপ উইন্ডো খুললাম, আমি যখন পপআপ উইন্ডোটি বন্ধ করি তখন আমি পিতামাতার পৃষ্ঠাটি রিফ্রেশ করতে চাই ((অনক্লোজ ইভেন্ট?) আমি কীভাবে এটি করতে পারি?

window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");

4
: এই চেক করুন stackoverflow.com/questions/18321323/... যথাসাধ্য সাহায্যের কেউ
NoNaMe

উত্তর:


233

আপনি ' উইন্ডো.ওপেনার ' ব্যবহার করে প্যারেন্ট উইন্ডো অ্যাক্সেস করতে পারেন , তাই, শিশু উইন্ডোতে নীচের মতো কিছু লিখুন:

<script>
    window.onunload = refreshParent;
    function refreshParent() {
        window.opener.location.reload();
    }
</script>

আমি জানতাম না উইন্ডো ওপেনার, ধন্যবাদ! আমি সবসময় কলারের উইন্ডোটি সন্তানের কন্টেন্ট উইন্ডোতে একটি ভেরিয়েবলের মধ্যে রাখি। : - /
কে

4
আপনি যদি সন্তানের পৃষ্ঠায় জাভাস্ক্রিপ্ট নিয়ন্ত্রণ করেন না (উদাঃ OAuth প্রবাহ) তবে আপনার @ Zuul এর সমাধানটিতে লাইক popupWindow.closedব্যবহার করে পরীক্ষা করতে হবে setInterval
jchook

34

পপ-আপ উইন্ডোতে এমন কোনও ঘনিষ্ঠ ইভেন্ট নেই যা আপনি শুনতে পারবেন।

অন্যদিকে, একটি বদ্ধ সম্পত্তি রয়েছে যা উইন্ডোটি বন্ধ হয়ে গেলে সত্যতে সেট করা থাকে।

বন্ধ থাকা সম্পত্তিটি পরীক্ষা করতে আপনি এটির জন্য টাইমার সেট করতে পারেন এবং এটি এর মতো করুন:

var win = window.open('foo.html', 'windowName',"width=200,height=200,scrollbars=no");   
var timer = setInterval(function() {   
    if(win.closed) {  
        clearInterval(timer);  
        alert('closed');  
    }  
}, 1000); 

এই কাজ করা ফিডল উদাহরণটি দেখুন !


4
আমি টাইমার ব্যবহার করতে চাই না! অন্য কোন ধারণা?
আর্মম্যান

4
কিছুটা হ্যাকিশ তবে আমি মনে করি টাইমার ব্যবহার করা সমস্ত ব্রাউজারে সবচেয়ে ভাল কাজ করবে।
কে

পপআপটি বন্ধ হওয়ার আগে বেশ কয়েকটি পৃষ্ঠাগুলি থাকলে এটিও সেরা সমাধান, কারণ অননলোড ইভেন্টটি প্রথম পৃষ্ঠা থেকে দূরে ব্যবহারকারী নেভিগেট করার পরেই ট্রিগার করা হয়।
অ্যান্টনচ্যানিং

14

আপনার সন্তানের পৃষ্ঠায়, এগুলি রাখুন:

<script type="text/javascript">
    function refreshAndClose() {
        window.opener.location.reload(true);
        window.close();
    }
</script>

এবং

<body onbeforeunload="refreshAndClose();">

তবে একটি ভাল ইউআই ডিজাইন হিসাবে আপনার একটি ক্লোজ ব্যবহার করা উচিত buttonকারণ এটি আরও ব্যবহারকারী বান্ধব। নীচে কোড দেখুন।

<script type="text/javascript">
    $(document).ready(function () {
        $('#btn').click(function () {
            window.opener.location.reload(true);
            window.close();
        });
    });
</script>

<input type='button' id='btn' value='Close' />

যখন পপআপ উইন্ডোটি বন্ধ থাকে, যখন ব্যবহারকারী পৃষ্ঠাটি রিফ্রেশ করতে এবং পপআপ উইন্ডোটি বন্ধ করার জন্য একটি বোতাম
টিপেন না

@ জেংকেভ, আমি জানতাম ওপি ইভেন্টটি উইন্ডো বন্ধের সাথে সংযুক্ত করতে চেয়েছিল, তবে আমি বিশ্বাস করি একটি বোতাম ব্যবহার করা আরও ভাল ইউআই নকশা। যাইহোক, আমি উভয়ের জন্য কোড অন্তর্ভুক্ত করেছি। দয়া করে উপদেশ দাও.
রে চেং

আমি <বডি onbeforeunload = "refreshAndClose ();"> <স্ক্রিপ্ট টাইপ = "টেক্সট / জাভাস্ক্রিপ্ট"> ফাংশন রিফ্রেশঅ্যান্ডক্লোজ () {উইন্ডো.ওপেনার.লোকেশন.রেলোড (সত্য); .c self.close (); </script>
steve0nz

3

আমি এটি ব্যবহার:

<script language='javascript'>
var t;
function doLoad() {
t = setTimeout("window.close()",1000);
}

</script>
<script type="text/javascript">
function refreshAndClose() {
    window.opener.location.reload(true);
    window.close();
}
</script>
<body onbeforeunload="refreshAndClose();" onLoad='doLoad()''>

উইন্ডোটি যখন এটি বন্ধ করে দেয় তখন পিতামাতা উইন্ডোটি সতেজ করে।


2

উইন্ডো.ওপেন নতুন তৈরি করা উইন্ডোতে একটি রেফারেন্স ফিরিয়ে দেবে, শর্ত দেওয়া URL টি একই উত্স নীতি মেনে চলে ।

এই কাজ করা উচিত:

function windowClose() {
    window.location.reload();
}

var foo = window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
foo.onbeforeunload= windowClose;​

যদি ব্যবহারকারী খোলা উইন্ডোতে লিঙ্কগুলি অনুসরণ করতে সক্ষম হন তবে কাজ করবে না। এবং আমি নিশ্চিত যে টার্গেট ইউআরএলটি প্রথমে লোড হওয়ার আগে একটি আনলোড ইভেন্ট নিক্ষেপ করা হবে, আপনি যেমন স্পষ্টতই ছাড়েন: ফাঁকা। (এসওপি উল্লেখের জন্য +1)
কে

2

আমার ক্ষেত্রে আমি প্যারেন্ট পৃষ্ঠায় লিংক বাটনে ক্লিক করে একটি পপ আপ উইন্ডো খুললাম। শিশুদের ব্যবহার বন্ধ করে পিতামাতাকে রিফ্রেশ করার জন্য

window.opener.location.reload();

চাইল্ড উইন্ডোতে বাচ্চার উইন্ডোটি পুনরায় খোলা হয়েছিল (আমার ধারণা ভিউ স্টেটের কারণেই হতে পারে wrong যদি আমি ভুল করি তবে আমাকে সংশোধন করুন)। সুতরাং আমি সিদ্ধান্ত নিয়েছি যে পৃষ্ঠাটি প্যারেন্টে পুনরায় লোড না করা এবং পৃষ্ঠাটিকে আবার একই ইউআরএল বরাদ্দ করে লোড লোড করব।

পপ আপ উইন্ডোটি বন্ধ করে আবার পপআপ খোলার এড়ানোর জন্য এটি সহায়তা করতে পারে,

window.onunload = function(){
    window.opener.location = window.opener.location;};

1

যদি আপনার অ্যাপ্লিকেশনটি এইচটিএমএল 5 সক্ষম ব্রাউজারে চলে। আপনি পোস্টমেসেজ ব্যবহার করতে পারেন । সেখানে দেওয়া উদাহরণটি আপনার সাথে বেশ একই রকম।


"অন্যথায়, আপনি বিভিন্ন উইন্ডো জুড়ে যোগাযোগ করতে পারবেন না।" ভূল. কৌশলটি এখনও সম্ভব, যদিও আমি @ মোজেস
জেংকেভ

-1 সরানো হয়েছে। আপনি যদি একটি ছোট উদাহরণ দেন তবে আপনি একটি +1 ;-)
কে

কিছু মনে করো না. তবে আমি মনে করি না উইন্ডো.পেনার আইইয়ের জন্য ঠিক আছে। আমি চেষ্টা করব
ক্রিস লি

4
@ কে, আই 7-তে দুর্দান্ত কাজ করে, ৮. খুব সুন্দর, আমি এটি আগে জানতাম না। মূসার পক্ষে +1।
ক্রিস লি

4
@ আরআমএনএন: jsfiddle.net/8c2e4/10 , উইন্ডো.ওপেনার ব্যবহার করুন। আপনি আপনার পরিবেশ পরীক্ষা করতে এটি ব্যবহার করতে পারেন।
ক্রিস লি

1

এটা চেষ্টা কর

        self.opener.location.reload(); 

বর্তমান উইন্ডোর প্যারেন্টটি খুলুন এবং লোকেশনটি পুনরায় লোড করুন।


0

আপনি সমস্ত পদক্ষেপের পদক্ষেপের পরে প্যারেন্ট কমান্ড (পিতা-মাতা উইন্ডোটি) দিয়ে প্রধান পৃষ্ঠায় পৌঁছে যেতে পারেন ...

    function funcx() {
        var result = confirm('bla bla bla.!');
        if(result)
            //parent.location.assign("http://localhost:58250/Ekocc/" + document.getElementById('hdnLink').value + "");
            parent.location.assign("http://blabla.com/" + document.getElementById('hdnLink').value + "");
    } 

0

আপনি প্যারেন্ট পৃষ্ঠায় নীচের কোডটি ব্যবহার করতে পারেন।

<script>
    window.onunload = refreshParent;
    function refreshParent() {
      window.opener.location.reload();
    }
</script>

0

নিম্নলিখিত কোডটি প্যারেন্ট উইন্ডো পোস্টটি বন্ধ করে রিফ্রেশ করতে পরিচালনা করবে:

function ManageQB_PopUp() {
            $(document).ready(function () {
                window.close();
            });
            window.onunload = function () {
                var win = window.opener;
                if (!win.closed) {
                    window.opener.location.reload();
                }
            };
        }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.