gpt4 book ai didi

javascript - 替换用户在 Javascript 中选择的文本

转载 作者:行者123 更新时间:2023-12-03 11:41:30 24 4
gpt4 key购买 nike

在谷歌上搜索了一段时间,看起来很简单,但我无法解决这个问题。我有一个 chrome 扩展,当你选择一些文本时,你右键单击,有一个按钮可以对选择执行一些数学运算。但由于某种原因,我无法让选择出现在警报窗口中。

if (window.getSelection) 
{
window.alert("Does it enter if window.getselection");
sel=window.getSelection();
window.alert(sel);
}

因此它进入if语句,显示第一个警报,然后第二个警报为空白。当我试图解决这个问题时,我失去了理智,感觉这将是一件如此简单的事情,以至于我错过了。另外,替换所选文本的最佳方法是什么?谢谢。

编辑:你们想查看我的 list 文件。

{
"name": "Convert",
"description": "lorem",
"version": "0.6",
"permissions": ["contextMenus", "tabs", "windows"],
"background": {
"scripts": ["conversion.js"]
},
"manifest_version": 2
}

我猜我在这里做错了什么,对于 Chrome 扩展,我是个新手。

最佳答案

您是 Chrome 扩展程序的初学者;因此,请查看 Architecture Overview .

如果您读过它,您会发现后台代码在单独的页面中运行,并且 window 引用它,而不是当前打开且可见的选项卡。要访问它,您通常需要某种形式的 Content Script .

但是在开始实现内容脚本之前,让我们再看一下 context menu API .

handler of a context menu click event接收一个 info 对象,其中包含 selectionText 以及调用上下文菜单时选择的文本。如果这就是您想要的全部(而不是完整的 Selection 对象),则根本不需要与页面交互:

function handleContext(info){
if(info.selectionText) {
// There was something selected, do stuff with it
}
}

如果您确实需要完整的选择对象,这里是它的最少代码(需要 activeTab 权限):

function handleContext(info, tab){
if(tab){
chrome.tabs.executeScript(
tab.id,
{code : "window.getSelection();"},
function(results) {
// Do something with results[0]
}
);
}
}

参见Programmatic InjectionexecuteScript docs供引用。

关于javascript - 替换用户在 Javascript 中选择的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26257436/

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