通过JavaScript获取页面的HTML源代码并覆盖它

时间:2013-07-08 15:11:30

标签: javascript html dom

我正在使用Javascript为浏览器编写扩展程序。如何获取整个HTML源代码并重新编写?

我需要更改该源内的一些单词并重新打开该页面。

3 个答案:

答案 0 :(得分:3)

在javascript中,您可以尝试以下内容:

var source = document.documentElement.outerHTML;

...并获取doctype:

var doctype = document.doctype;

来源:Get the whole document's html with JavaScript/JQuery

我还发现此帖子涉及在Chrome扩展程序中执行相同操作,如果这有帮助:

Getting the source HTML of the current page from chrome extension

答案 1 :(得分:1)

尝试这样的方法来获取页面源:

document.documentElement.innerHTML

这要改变它:

document.documentElement.innerHTML = '<body>I like pie</body>'

document.documentElement是页面上的<html> ... </html>元素,而innerHTML将提供它的HTML。

答案 2 :(得分:1)

您可以通过以下方式获取整个页面的来源:

oldSource = document.getElementsByTagName("html")[0].innerHTML;

然后用以下内容替换整个页面:

document.write(newSource);

或者,如果您想要替换页面上的少数元素,请使用以下其中一项:

  1. 如果你知道元素的id

    oldText = document.getElementById("idOfElement").innerHTML;
    document.getElementById("idOfElement").innerHTML = newText;
    
  2. 如果你知道元素的class

    oldText = document.getElementsByTagName("classOfElement")[0].innerHTML;
    document.getElementsByTagName("classOfElement")[0].innerHTML = newText;
    

    (其中0表示您正在寻找页面上具有特定类名的第一个元素)

  3. 如果您知道元素的标记名称:

    oldText = document.getElementsByClassName("tagName")[0].innerHTML;
    document.getElementsByClassName("tagName")[0].innerHTML = newText;
    

    (其中0表示您正在寻找页面上具有特定标记名称的第一个元素)

  4. 或者,您可以使用jQuery selectors,例如:

    oldText = $("#idOfElement").html();
    oldText = $(".classOfElement").html();
    oldText = $("tagName:nth-child(1)").html();
    
    $("#idOfElement").html(newText);
    $(".classOfElement").html(newText);
    $("tagName:nth-child(1)").html(newText);
    

    其中:nth-child(1)表示您正在寻找页面上具有特定标记名称的第一个元素。如果有多个元素具有相同的类名,您也可以在搜索类时使用它。