2009-09-02 64 views
17

Có cách nào để truy cập mã nguồn trang HTML bằng javascript không?Làm cách nào để lấy nguồn HTML từ trang?

Tôi biết rằng tôi có thể sử dụng document.body.innerHTML nhưng chỉ chứa mã bên trong cơ thể. Tôi muốn nhận được tất cả mã nguồn trang bao gồm thẻ đầu và thẻ nội dung có nội dung của họ và nếu có thể, cũng là thẻ html và loại tài liệu. Có thể không?

Trả lời

25

Sử dụng

document.documentElement.outerHTML 

hoặc

document.documentElement.innerHTML 
+0

tôi không biết lý do tại sao trong Firefox đối tượng document.documentElement không có tài sản outerHTML, nhưng với sự innerHTML tôi có thể nhận được hầu như tất cả mọi thứ ngoại trừ doctype cảm ơn bạn! – mck89

+7

@ mck89: không có trình duyệt nào nhưng IE sẽ có 'outerHTML'. –

+5

Lưu ý rằng nguồn bạn nhận được với Firefox/hầu hết các trình duyệt là nguồn "đúng" bạn đã phân phối. Trong IE, bạn sẽ nhận được HTML "sống" của trang bao gồm bất kỳ thay đổi nào mà người dùng đã thực hiện đối với biểu mẫu, bất kỳ nội dung DOM mới nào. Trong IE, nó cũng sẽ là trường hợp thẻ hỗn hợp không hợp lệ mà IE cung cấp khi yêu cầu .innerHTML của các yếu tố. – scunliffe

8

Một cách để làm điều này sẽ được tái yêu cầu các trang sử dụng XMLHttpRequest, sau đó bạn sẽ nhận được toàn bộ trang đúng nguyên văn từ máy chủ web.

0

Đối với IE bạn cũng có thể sử dụng: document.all [0] .outerHTML

10

này có thể được thực hiện trong một lớp lót bằng XMLSerializer.

var generatedSource = new XMLSerializer().serializeToString(document); 

Mà cho Chuỗi

<!DOCTYPE html><html><head> 

<title>html - javascript page source code - Stack Overflow</title> 
... 
0

Với điều kiện là

  • đúng mã nguồn html đang bị truy nã (không hiện DOM serization)
  • và trang đó đã bị tải sử dụng GET phương thức,

mã nguồn trang web có thể được tái tải:

fetch(document.location.href) 
    .then(response => response.text()) 
    .then(pageSource => /* ... */) 
+0

Điều đó không đáng tin cậy vì không có người bảo đảm rằng máy chủ sẽ phục vụ cùng một nội dung trong lần tiếp theo. –

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