我正在尝试创建一个 Chrome 扩展,允许用户在单击按钮后获取网页的选定文本,然后在控制台中记录此文本。
但我的代码只有在从 HTML 弹出窗口中选择文本时才有效。如果我从随机网页中选择文本,然后单击“保存”按钮,则会在控制台中打印一个空白行。
我想我的content.js文件在显示扩展弹出窗口时无法与网页交互,但我不知道如何解决。我知道还有其他类似的问题,但我没有尝试过(例如在不同的 .js 文件之间传递消息)。
这是我的文件:
清单.json:
{
"manifest_version": 3,
"version": "1.0",
"name": "test",
"action": {
"default_popup": "index.html"
},
"permissions": [
"tabs",
"notifications"
],
"content_scripts": [
{ "matches": ["<all_urls>"],
"js" : ["content.js"]}
],
"background":
{
"service_worker": "background.js"
}}
索引.html:
<html>
<head>
<link rel="stylesheet" href="index.css">
</head>
<body>
<p>Just some text.</p>
<button id="save-btn">SAVE SELECTION</button>
<script src="content.js"></script>
</body>
</html>
内容.js:
const saveBtn = document.getElementById("save-btn")
saveBtn.addEventListener("click", function(){
console.log(window.getSelection().toString())
})