2

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

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

4

3 回答 3

3

在 javascript 中,您可以尝试以下操作:

var source = document.documentElement.outerHTML;

...并获得 doctype 使用:

var doctype = document.doctype;

来源:使用 JavaScript/JQuery 获取整个文档的 html

如果这有帮助,我还发现了这篇关于在 Chrome 扩展程序中做同样事情的帖子:

从 chrome 扩展获取当前页面的源 HTML

于 2013-07-08T15:17:38.267 回答
2

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

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 选择器例如:

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

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

于 2013-07-08T16:05:40.080 回答
1

尝试这样的事情来获取页面源:

document.documentElement.innerHTML

这要改变它:

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

document.documentElement<html> ... </html>页面上的元素,innerHTML将给出它的 HTML。

于 2013-07-08T15:13:28.720 回答