如何获取页面的源代码而不是当前内容?

时间:2015-11-12 04:43:31

标签: javascript dom

我的文章框中包含属性value"Original Value"的文章框。我们假设我已加载它并在文本框中键入“新值”。以下两个示例都应该返回-1(我在Firefox控制台中尝试过它)。

// 1.
var wholecontento = "";
var wholecontento = document.documentElement.outerHTML;
alert(wholecontento.search("New Value"));

// 2.
var wholecontento = "";
var wholecontento = document.body.outerHTML;
alert(wholecontento.search("New Value"));

但是它们都返回大于1的整数。我该如何解决?

1 个答案:

答案 0 :(得分:1)

这是一种正确的行为。您使用DOM(文档对象模型)获取HTML字符串,它反映了您在浏览器中看到的当前HTML页面(包括更改的内容)

如果您需要保留文本框的旧值,则需要:

  1. ,在加载页面时存储文本框的原始值,以便稍后进行比较
  2. ,只有当您需要真正的HTML源代码时,您才能执行以下任一操作:
    1. 确保您的代码是浏览器运行的第一部分代码,获取跨浏览器解决方案可能很棘手(请查看此question),然后在您的代码中存储副本document.body.outerHTML以供日后使用。
    2. ,将请求发回到当前网址并将返回正文存储为HTML源代码,这样您就可以确定自己拥有原始HTML源代码的副本,但需要付费你还有1个请求。
  3. 
    
    //jQuery code
    $.get(window.location.href, function (resp) {
         // store the resp.data on some object
         var sourceHTML = resp.data;
     })
     .fail(function (resp) {
         // error handling
     });
    
    
    

    在下面添加了Paul S的评论

    document.body.outerHTML仅包含<body>部分。这个 (new XMLSerializer).serializeToString(document)将为您提供整个<html>,包括<!DOCTYPE html>