4

background.html で、現在の Web ページの dom を取得したい。「getElementById()」など

4

2 に答える 2

7

これを行うには、 Message Passingを使用する必要があります。DOM と通信するにはメッセージ パッシングが必要であり、DOM と通信する唯一の方法はコンテンツ スクリプトを使用することです。これを行うための 2 つの方法を紹介します。

方法 1

訪問したすべてのページに拡張リクエストをリッスンさせる

background.html

<html>
<script>
chrome.tabs.getSelected(null, function(tab) {
  chrome.tabs.sendRequest(tab.id, {method: "getHTML"}, function(response) {
    console.log(response.data);
  });
});
</script>
</html>

content_script.js

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
    if (request.method == "getHTML")
      sendResponse({data: document.getElementById('header').innerHTML});
    else
      sendResponse({}); // snub them.
});

方法 2

次の必要がある場合にのみ、コンテンツ スクリプトを実行します。

background.html

<html>
<script>
chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.executeScript(tab.id, {file: 'execute.js'});
});

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
  console.log('Data Recieved: ' + request.data);
});
</script>
</html>

execute.js

chrome.extension.sendRequest({data: document.getElementById('header').innerHTML});
于 2010-05-06T22:13:17.490 に答える
-4

開発者UIの場合はCTRL+SHIFT + Iを、ソースの場合はCTRL+Uを押します。

于 2010-05-06T08:40:15.020 に答える