私は、現在のタブのテキスト コンテンツ全体を取得する必要がある拡張機能を開発しています。現在、現在のタブから選択したテキストを取得するプラグインがあります。つまり、本質的には、その ctrl-A バージョンを探しています :)。これは、@Derek からヒントを得て、これまでに行ったことです。
これは私のイベント ハンドラー内にあります (これは 1 つだけであり、他にもリスナーなどがありますonUpdated
)。
chrome.tabs.onSelectionChanged.addListener(function(tabId,changeInfo,tab) {
chrome.tabs.getSelected(null,function(tab) {
chrome.tabs.sendRequest(tab.id, {method: "getSelection"}, function (response) {
selectedtext = response.data;
});
chrome.tabs.sendRequest(tab.id, {method: "getText"}, function (response) {
alltext = response.data;
});
});
});
コンテンツ スクリプトに書いた内容は次のとおりです。
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if (request.method == "getSelection")
sendResponse({data: window.getSelection().toString()});
else if (request.method == "getText")
sendResponse({data: document.body.innerText});
else
sendResponse({});
});
しかし、 はdocument.body.innerText
undefined を返します。 の現在のタブのテキスト全体が必要ですalltext
。誰かこれを手伝ってくれませんか? ありがとうございます。
ベストアンサー1
document.body.innerText
またはを使用document.all[0].innerText
して、コンテンツスクリプト。
それはすべてを取得しますテキストコンテンツページ内に HTML コードなしで表示されます。
document.all[0].outerHTML
または、ページ全体の HTML を取得するためにも使用できます。
例
コンテンツスクリプト
function getText(){
return document.body.innerText
}
function getHTML(){
return document.body.outerHTML
}
console.log(getText()); //Gives you all the text on the page
console.log(getHTML()); //Gives you the whole HTML of the page
追加した
コンテンツスクリプトは、文章ポップアップに追加できます。以下を使用できます:
chrome.tabs.getSelected
タブを選択するには、chrome.tabs.sendRequest
コンテンツスクリプトにリクエストを送信するには、chrome.extension.onRequest.addListener
リクエストに耳を傾けます。
ポップアップページ
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.sendRequest(tab.id, {method: "getText"}, function(response) {
if(response.method=="getText"){
alltext = response.data;
}
});
});
コンテンツスクリプト
chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
if(request.method == "getText"){
sendResponse({data: document.all[0].innerText, method: "getText"}); //same as innerText
}
}
);
これでうまくいくはずです。