簡體   English   中英

Chrome擴展讀取當前頁面的innerHTML?

[英]Chrome extension read innerHTML of the current page?

嗨,這可能是一個愚蠢的問題,但我無法在任何地方找到答案。 我正在編寫一個 chrome 擴展,我只需要讀取當前頁面的 html 以便從中提取一些數據。

這是我到目前為止所擁有的:

<script>
    window.addEventListener("load", windowLoaded, false);
    function windowLoaded() {
        alert(document.innerHTML)
      });
    }
</script>

誰能告訴我我做錯了什么? 謝謝,

function windowLoaded() {
    alert('<html>' + document.documentElement.innerHTML + '</html>');
}
addEventListener("load", windowLoaded, false);

注意windowLoaded是在使用之前創建的,而不是之后創建的,這將不起作用。

另請注意我如何獲取document.documentElement的 innerHTML,即html標記,然后在其周圍添加html源標記。

我正在編寫一個 chrome 擴展,我只需要讀取當前頁面的 html 以便從中提取一些數據

我認為這里的一個重要答案不是用於警告innerHTML的正確代碼,而是如何從已經呈現的內容中獲取所需的數據

正如pimvdb指出的那樣,由於拼寫錯誤並且需要document.documentElement.innerHTML ,您的代碼無法正常工作,您可以在 Chrome 控制台 (Ctrl+Shift+I) 中進行診斷。 但這對於您首先想要內部 HTML 的原因是次要的。 無論您是在尋找某個節點、特定文本、存在多少<div>元素、ID 的值等等,我都強烈推薦使用像jQuery這樣的庫(vanilla JS 可以工作,但它可以冗長而笨拙)。 您可能不想讀入所有 HTML 並使用字符串函數或正則表達式對其進行解析,您可能希望利用您已經可用的所有 DOM 解析功能。

換句話說,是這樣的:

$("#some_id").val();                      // jQuery
document.getElementById("some_id").value; // vanilla JS

可能比像這樣易碎的東西更安全、更容易、更易讀(這里可能有點偏離,但只是為了說明一點):

innerHTML.match(/<[^>]+id="some_id"[^>]+value="(.*?)"[^>]*?>/i)[1];
window.addEventListener("load", windowLoaded, false);

function windowLoaded() {
    alert(document.documentElement.innerHTML);
}

你有一個沒有目的的}}); 應該只是} 這些是語法錯誤。

此外,它是document.documentElement.innerHTML ,因為它不是document的屬性。

使用document.documentElement.outerHTML (請注意,Firefox 不支持此功能;與您的情況無關。)但是,這仍然不完美,因為它不會返回根元素之外的節點( !doctype以及可能的一些注釋或處理指令)。 document.innerHTML屬性是 AFAIK,在 HTML5 規范中指定,但目前不受任何瀏覽器支持。

僅供參考,導航到view-source:www.example.com也會顯示整個標記(Chrome 和 Firefox)。 但我不知道你是否可以以某種方式使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM