background.html で、現在の Web ページの dom を取得したい。「getElementById()」など
4173 次
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 に答える