我正在使用Chrome扩展程序,我需要将突出显示的文本传递给browser_action。我在Google群组中找到了以下代码,并且在撰写时它仍然有效 - 但它不再有效..
有没有人知道另一种解决方案?
background.html:
<html>
<head>
<script type="text/javascript">
var selection_callbacks = [];
function getSelection(callback) {
selection_callbacks.push(callback);
chrome.tabs.executeScript(null, { file: "contentscript.js" });
};
chrome.extension.onRequest.addListener(function (request) {
var callback = selection_callbacks.shift();
callback(request);
});
</script>
</head>
<body>
</body>
</html>
popup.html:
<html>
<head>
<script type="text/javascript">
function onSelection(text) {
document.getElementById("output").innerHTML = text;
}
chrome.extension.getBackgroundPage().getSelection(onSelection);
</script>
</head>
<body>
<div id="output">
This should be replaced with the selected text
</div>
</body>
</html>
contentscript.js:
chrome.extension.sendRequest(window.getSelection().toString());
答案 0 :(得分:1)
您可以使用真实的content script,而不是使用chrome.extension.executeScript将JavaScript注入页面。然后,您可以使用chrome.tabs.sendRequest让background.html向内容脚本询问选择。