2011-12-23 45 views
13

Đứa trẻ mất cha mẹ !!Chức năng gọi trên cửa sổ mở

Tôi có cửa sổ chính, khi ai đó nhấp vào hình ảnh, cửa sổ bật lên JS sẽ mở ra và hiển thị ảnh cũng như thông tin của ảnh đó.

Để đóng cửa sổ popup/con, và để flash một yếu tố trên cửa sổ phụ huynh/mở của tôi, tôi đã sử dụng chức năng này:

function closeWindow() { 
    var currentID = document.getElementById('currentID').value; 
    window.opener.flashElement(currentID); 
    window.close(); 
} 

Vấn đề của tôi là điều này không có tác dụng nếu người dùng của tôi di chuyển cách xa trang mà cửa sổ bật lên đã mở ban đầu. Ví dụ: trong cửa sổ bật lên, có các nút tiếp theo và trước đó để cuộn qua từng ảnh trong tập hợp kết quả đó, tải lại trang có giá trị chuỗi truy vấn mới.

Nếu người dùng cuộn (tải lại trang) ít hơn 7 lần, nhưng nếu họ cuộn nhiều hơn, chức năng window.opener không hoạt động và do đó chức năng window.close cũng không hoạt động!

Tôi có thể xây dựng lại trang để dữ liệu đến qua cuộc gọi AJAX, thay vì tải lại trang, nhưng đó là rất nhiều công việc tôi có thể làm mà không cần.

Bất kỳ ý tưởng nào?

+0

Khi nào hàm 'closeWindow()' được gọi? Khi người dùng nhấp vào nút "đóng" hoặc điều gì đó tương tự? Và chỉ để hoàn toàn rõ ràng, 'closeWindow()' nằm trong cửa sổ con, đúng không? –

+0

có thể trùng lặp của [Popup Window.Opener Redirected hoặc Closed] (http://stackoverflow.com/questions/5872721/popup-window-opener-redirected-or-closed) –

+0

@JackieChiles yes closeWindow() được gọi khi người dùng nhấp vào nút đóng và closeWindow() nằm trong cửa sổ con. Như tôi đã nói, nó hoạt động tốt nếu người dùng không tải lại cửa sổ bật lên nhiều hơn 7-8 lần. – TheCarver

Trả lời

12

tôi đoán là

window.opener.flashElement(currentID); 

là ném một lỗi, hoặc chức năng không tồn tại. Nhiều khả năng phần tử có giá trị của currentID không tồn tại trên trang. Hãy thử bắt lỗi.

function closeWindow() { 
    var currentID = document.getElementById('currentID').value; 
    try { 
     window.opener.flashElement(currentID); 
    } catch (err) { 
     alert(err.description || err) //or console.log or however you debug 
    } 
    window.close(); 
} 
+0

Điều đó đã giúp ích rất nhiều. Tôi phát hiện ra rằng giá trị hiện tạiID trống, vì vậy nó đã gây ra lỗi trong hàm trên trang mẹ. Nhưng điều này vẫn không giải thích tại sao currentID bị thiếu ở vị trí số 1. Đó là một trường văn bản ẩn được phổ biến bởi ASP với photoID. Nếu photoID không hiển thị, trang sẽ không tải! Lạ thật !! – TheCarver

Các vấn đề liên quan