gpt4 book ai didi

javascript - Chrome 扩展突出显示文本选择 chrome.tabs

转载 作者:行者123 更新时间:2023-11-27 22:28:40 24 4
gpt4 key购买 nike

我在使用 chrome 扩展程序时遇到了问题。我有“标签”权限,但我不知道如何在没有<背景页面的情况下检索页面上的选定文本。 <---- 我改变主意了,我可以拥有背景页面。

这是脚本:

var code = document.getSelection().toString();
document.getElementsById("q").value = code;

我已经放置了一个 chrome.executeCommand 方法(不记得该方法是如何定向的),但这也不起作用。安装此扩展程序时,我不希望后台页面出现延迟。当我有背景时,它可能不会造成太大的延迟,但每一件都很重要。另外,基本上我的扩展将是关于可移植谷歌的!扩展名,如果您突出显示/选择文本,它将自动设置输入字段的值。点击 https://www.dropbox.com/sh/c7q2puadva2vojf/GsuwWcXHjr看看我到目前为止的进步!

最佳答案

(在几种可能的方法中)你可以像这样实现你想要的:

  1. 加载弹出窗口后,使用 chrome.tabs.executeScript() 将一些代码注入(inject)选项卡的网页。
  2. 从注入(inject)的代码中找到并返回选定的文本。
  3. 用返回的文本填充“搜索查询”输入字段。
  4. 点击“搜索”按钮后,打开一个包含 google 搜索结果的新标签页。

下面是一个示例扩展的源代码,正是这样做的:

maifest.json 中:

{
"manifest_version": 2,

"name": "Test Extension",
"version": "0.0",

"browser_action": {
"default_title": "Test Extension",
"default_popup": "popup.html"
},

"permissions": [
"<all_urls>"
],
}

popup.html 中:

<!DOCTYPE html>
<html>
<head>
<title>Google It!</title>
<script type="text/javascript" src="popup.js"></script>
</head>
<body>
<input type="text" id="inp" size="20" placeholder="Search query..." />
<br />
<input type="button" id="btn" value="Google It!" />
</body>
</html>

popup.js 中:

/* The URL for the Google search */
var google = 'http://google.com/#q=';

/* The function that finds and returns the selected text */
var funcToInject = function() {
var range = window.getSelection().getRangeAt(0);
var selectedText = range.cloneContents().textContent;
return selectedText;
};
/* This line converts the above function to string
* (and makes sure it will be called instantly) */
var jsCodeStr = ';(' + funcToInject + ')();';

window.addEventListener('DOMContentLoaded', function() {

/* Find our input elements from `popup.html` */
var inp = document.querySelector('input[type="text"]#inp');
var btn = document.querySelector('input[type="button"]#btn');

/* Open a new tab with the search results */
btn.addEventListener('click', function() {
var query = encodeURIComponent(inp.value);
chrome.tabs.create({ url: google + query });
});

/* Inject the code into all frames of the active tab */
chrome.tabs.executeScript({
code: jsCodeStr,
allFrames: true
}, function(selectedTextPerFrame) {

if (chrome.runtime.lastError) {
/* Report any error */
alert('ERROR:\n' + chrome.runtime.lastError.message);
} else if ((selectedTextPerFrame.length > 0)
&& (typeof(selectedTextPerFrame[0]) === 'string')) {
/* The results are as expected,
* populate the "search-query" input field */
inp.value = selectedTextPerFrame[0].trim();
}
});
});

关于javascript - Chrome 扩展突出显示文本选择 chrome.tabs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20534685/

24 4 0
文章推荐: html - 强制
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com