2009-09-02 17 views
17

क्या जावास्क्रिप्ट का उपयोग कर एचटीएमएल स्रोत कोड पेज तक पहुंचने का कोई तरीका है?मैं पृष्ठ से HTML स्रोत कैसे प्राप्त करूं?

मुझे पता है कि मैं document.body.innerHTML का उपयोग कर सकता हूं लेकिन इसमें केवल शरीर के अंदर कोड शामिल है। मैं उनके पृष्ठ के साथ सिर और बॉडी टैग समेत सभी पेज स्रोत कोड प्राप्त करना चाहता हूं, और यदि यह संभव है, तो HTML टैग और डॉक्ट टाइप। क्या यह संभव है?

उत्तर

25

उपयोग

document.documentElement.outerHTML 

या

document.documentElement.innerHTML 
+0

मुझे पता नहीं फ़ायरफ़ॉक्स में क्यों document.documentElement वस्तु outerHTML संपत्ति नहीं है, लेकिन innerHTML साथ मैं को छोड़कर लगभग सब कुछ प्राप्त कर सकते हैं Doctype तो धन्यवाद! – mck89

+7

@ mck89: कोई ब्राउज़र नहीं है लेकिन आईई में 'बाहरी HTML' होगा। –

+5

ध्यान रखें कि फ़ायरफ़ॉक्स/अधिकांश ब्राउज़रों के साथ आपको प्राप्त स्रोत "सत्य" स्रोत है जिसे आपने सेवा दी है। आईई में आपको पेज के "लाइव" एचटीएमएल मिलेगा जिसमें उपयोगकर्ता ने फॉर्म में कोई भी बदलाव किया है, कोई भी नई डोम सामग्री इत्यादि। आईई में यह मिश्रित केस अमान्य टैग सूप भी होगा जो आईई प्रदान करता है .ininnerHTML का अनुरोध करते समय तत्वों। – scunliffe

8

एक तरीका यह है करने के लिए अनुरोध करने के लिए फिर से XMLHttpRequest का उपयोग कर पृष्ठ हो सकता है, तो आप वेब सर्वर से शब्दशः पूरे पृष्ठ मिल जाएगा।

0

IE के लिए आप भी उपयोग कर सकते हैं: document.all [0] .outerHTML

10

यह एक लाइनर XMLSerializer का उपयोग करने में किया जा सकता है।

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

कौन सा स्ट्रिंग

<!DOCTYPE html><html><head> 

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

देता है बशर्ते कि

  • सच HTML स्रोत कोड की तलाश है (नहीं वर्तमान डोम serization)
  • और पेज प्राप्त का उपयोग कर लोड किया गया था कि विधि,

पेज स्रोत फिर से डाउनलोड किया जा सकता है:

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

यह अविश्वसनीय है क्योंकि कोई गारेंटी नहीं है कि सर्वर अगली बार उसी सामग्री की सेवा करेगा। –

संबंधित मुद्दे