2012-10-15 23 views
6

Giả sử tôi có một trang a.html và muốn truy xuất văn bản của phần tử văn bản bằng cách sử dụng phần tử id <p id="name">NAME</p> từ một trang khác b.html.Làm cách nào để sử dụng Javascript để truy cập các yếu tố của một trang khác?

+0

Yêu cầu trang từ 'iframe', sau đó lấy phần tử. Nhưng bạn sẽ không chỉ có máy chủ trả lại dữ liệu bạn muốn? –

+0

có thể trùng lặp của http://stackoverflow.com/questions/3396542/read-html-text-from-another-html-page-using-jquery – Anshu

+0

@ kmb385: Miễn là trang thứ hai nằm trên cùng một tên miền, đó là hoàn toàn có thể làm được. – Blender

Trả lời

12

Sử dụng jQuery get method, nó khá đơn giản:

$.get('a.html', null, function(text){ 
    alert($(text).find('#name')); 
}); 

Raw XHR Request (bởi nhu cầu phổ biến):

var request = new XMLHttpRequest(); 

request.addEventListener("load", function(evt){ 
    console.log(evt); 
}, false); 

request.open('GET', 'a.html', true), 
request.send(); 
+3

jQuery không có phương thức '$ .load' và quá tải để tải một thư viện lớn chỉ để thực hiện một yêu cầu XHR đơn giản. –

+2

@ user1689607 thực sự ?! liệu có quá tải nếu trình duyệt của khách hàng có jQuery đã có trong bộ nhớ cache của nó không? – xandercoded

+2

@Xander: Làm thế nào để bạn biết nếu nó nằm trong bộ nhớ cache? –

0

Nếu trang là trên cùng một tên miền, bạn có thể sử dụng jQuery. ajax() hoặc jQuery.load()

$.ajax({ 
    url: url, 
    data: data, 
    success: success, 
    dataType: dataType 
}); 
0

Bạn cần phải:

  1. Tìm nạp nội dung của trang (bạn ngụ ý rằng Same Origin Policy sẽ không thành vấn đề, vì vậy tôi sẽ không thảo luận xung quanh việc đó).
  2. Phân tích đó vào một DOM HTML
  3. Giải nén một phần của DOM mà bạn quan tâm
  4. làm điều gì đó với DOM

Đây là khá nhiều công việc. jQuery sẽ thực hiện hầu hết công việc cho bạn:

jQuery('#element_to_load_content_into').load('a.html#name'); // Note use of fragment identifier 
Các vấn đề liên quan