Helpex - Trao đổi & giúp đỡ Đăng nhập
98

Tôi đã mở một cửa sổ bật lên bằng window.open bằng JavaScript, tôi muốn làm mới trang mẹ khi tôi đóng cửa sổ bật lên này. (Sự kiện onclose?) Làm cách nào tôi có thể làm điều đó?

window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
98 hữu ích 1 bình luận 360k xem chia sẻ
11 trả lời 11
237

Bạn có thể truy cập cửa sổ cha bằng cách sử dụng ' window.opener ', vì vậy, hãy viết một cái gì đó như sau trong cửa sổ con:

<script>
    window.onunload = refreshParent;
    function refreshParent() {
        window.opener.location.reload();
    }
</script>
237 hữu ích 2 bình luận chia sẻ
35

Cửa sổ bật lên không có bất kỳ sự kiện đóng nào mà bạn có thể nghe.

Mặt khác, có một thuộc tính đóng được đặt thành true khi cửa sổ được đóng lại.

Bạn có thể hẹn giờ để kiểm tra thuộc tính đã đóng đó và thực hiện như sau:

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); 

Hãy xem ví dụ Fiddle đang hoạt động này !

35 hữu ích 3 bình luận chia sẻ
14

trên trang con của bạn, hãy đặt những thứ sau:

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

<body onbeforeunload="refreshAndClose();">

nhưng là một thiết kế giao diện người dùng tốt, bạn nên sử dụng Đóng buttonvì nó thân thiện hơn với người dùng. xem mã bên dưới.

<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' />
14 hữu ích 3 bình luận chia sẻ
3

Tôi sử dụng cái này:

<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()''>

khi cửa sổ đóng lại, sau đó làm mới cửa sổ mẹ.

3 hữu ích 0 bình luận chia sẻ
2

window.open sẽ trả về một tham chiếu đến cửa sổ mới được tạo, miễn là URL được mở tuân thủ Chính sách Nguồn gốc Giống nhau .

Điều này sẽ hoạt động:

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

var foo = window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
foo.onbeforeunload= windowClose;​
2 hữu ích 1 bình luận chia sẻ
2

Trong trường hợp của tôi, tôi đã mở một cửa sổ bật lên khi nhấp vào nút liên kết trong trang mẹ. Để làm mới cha mẹ khi đóng con bằng cách sử dụng

window.opener.location.reload();

trong cửa sổ con gây ra mở lại cửa sổ con (Có thể là do Chế độ xem, tôi đoán. Hãy sửa cho tôi Nếu tôi sai). Vì vậy, tôi quyết định không tải lại trang trong trang gốc và tải lại trang chỉ định cùng một url cho nó.

Để tránh cửa sổ bật lên mở lại sau khi đóng cửa sổ bật lên, điều này có thể hữu ích,

window.onunload = function(){
    window.opener.location = window.opener.location;};
2 hữu ích 0 bình luận chia sẻ
1

Nếu ứng dụng của bạn chạy trên trình duyệt hỗ trợ HTML5. Bạn có thể sử dụng postMessage . Ví dụ đưa ra ở đó khá giống với của bạn

1 hữu ích 5 bình luận chia sẻ
1

Thử cái này

        self.opener.location.reload(); 

Mở cửa sổ gốc của cửa sổ hiện tại và tải lại vị trí.

1 hữu ích 0 bình luận chia sẻ
0

Bạn có thể truy cập trang chính bằng lệnh cha (cha là cửa sổ) sau bước bạn có thể thực hiện mọi thứ ...

    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 hữu ích 0 bình luận chia sẻ
0

Bạn có thể sử dụng mã dưới đây trong trang mẹ.

<script>
    window.onunload = refreshParent;
    function refreshParent() {
      window.opener.location.reload();
    }
</script>
0 hữu ích 0 bình luận chia sẻ
0

Mã sau sẽ quản lý để làm mới bài đăng đóng cửa sổ mẹ:

function ManageQB_PopUp() {
            $(document).ready(function () {
                window.close();
            });
            window.onunload = function () {
                var win = window.opener;
                if (!win.closed) {
                    window.opener.location.reload();
                }
            };
        }
0 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ javascript html javascript-events , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading