2009-06-23 36 views
8

Tôi có một trang HTML mở một trang khác thông qua JavaScript. Khi người dùng nhấp vào một nút trong trang khác, tôi muốn đăng thông báo trong DIV của trang mở thông qua JQuery. Tôi không thể đặt ngón tay lên đó, nhưng tôi dường như không thể làm được điều này. Đây là trang mở của tôiJQuery - Ghi vào cửa sổ mở

<html> 
    <head> 
    <script type="text/javascript" src="jquery-1.3.2.min.js"></script> 
    </head> 

    <body> 
    <input type="button" onclick="window.open('dialog.html', '_blank', 'height=200, width=300');" value="launch!" /> 
    <div id="testDiv"></div> 
    </body> 
</html> 

Khi người dùng nhấp vào "khởi chạy!" , một hộp thoại sẽ xuất hiện. Mã cho hộp thoại trông giống như sau:

<html> 
    <head> 
    <script type="text/javascript" src="jquery-1.3.2.min.js"></script> 
    </head> 

    <body> 
    <input type="button" onclick="updateOpener()" value="Update Opener" /> 
    <script type="text/javascript"> 
     function updateOpener() 
     { 
     var testDiv = window.opener.jQuery("#testDiv"); 
     if (testDiv != null) { 
     alert("here"); 
     testDiv.html("Updated!"); 
     } 
     } 
    </script> 
    </body> 
</html> 

Đáng ngạc nhiên, hộp cảnh báo xuất hiện. Tuy nhiên, tôi dường như không thể cập nhật HTML của DIV trong trang mở đầu của tôi. Có ai biết cách để làm điều này không?

+0

Mã trên đây làm việc cho tôi. –

+0

Anh ấy chỉ sửa nó với bản chỉnh sửa của mình. – montrealist

Trả lời

5

Bạn đang tham chiếu "confirmDiv". DIV ở đâu?

+3

Đây là vấn đề của OP. Ông đã sửa mã của mình sau câu trả lời này, và bây giờ nó hoạt động. – Sev

0

Ummm, nó làm việc cho tôi trong Firefox 3.0.11, IE8 và Chrome 2 ... (Tức là nút dialog.html cập nhật HTML trong trang mở để nói 'cập nhật!'.)

0

Oddly , ví dụ của bạn hoạt động tốt cho tôi trong Chrome, IE 8 và FireFox. Bạn có bất kỳ chi tiết nào khác không?

2

Bạn không thể làm điều đó nếu trang cha (công cụ mở) nằm trên tên miền khác. Nếu không, mã của bạn hoạt động hoàn hảo.

Ngoài ra, kiểm tra! = Null của bạn có thể không làm những gì bạn nghĩ nó đang làm, vì hàm jQuery không bao giờ trả về null. Nếu bạn đang kiểm tra sự tồn tại của một phần tử, bạn cần phải làm theo cách này ...

var el = $("#myElementId"); 
if(el.length == 0) 
    alert('Not found!'); 
Các vấn đề liên quan