嗨,我有一个 chrome 扩展程序,单击时会注入(inject)侧边栏。我想要的是,如果我在网页上选择一个位置,然后单击扩展程序,它会自动用所选文本填充位置输入栏并调用iframe 内的 Maps API,以位置名称作为查询。
最佳答案
我在代码中发现了一些问题。
背景.js
var place = window.getSelection().toString()
不应该放置在这里。您无法在背景页面中选择文本。您可以删除此行。
就像评论中所说,您应该替换已弃用的 chrome.tabs.getSelected
通过chrome.tabs.query({active: true}, callback);
,了解有关此功能的更多信息 here .
脚本.js
嗅觉代码是handleRequest
功能。您已设定条件,第一个不执行任何操作,第二个(如果我很好理解的话)显示侧边栏。
所以我认为问题就在这里。您应该移动 place = window.getSelection().toString();
声明第一个条件,然后调用sendResponse({data : place})
。这样,您应该将页面中选择的文本发送回后台脚本。
function handleRequest(request, sender, sendResponse)
{
if (request.method == "getSelection")
{
place = window.getSelection().toString();
console.log("sending to background : " + place);
sendResponse({data: place});
}
if (request.callFunction == "toggleSidebar")
{
toggleSidebar();
console.log("adasda");
}
}
所有代码
你应该进行清理。有很多无用的评论,您应该删除。它将提高代码的可读性,以便更好地调试。
关于javascript - 单击时将网页上选定的文本添加到注入(inject)的侧边栏 Chrome 扩展中的字段内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31233047/