Javascript 将变量从函数传递到函数中的函数
我正在尝试创建一个chrome扩展,它通过上下文菜单获取所选文本,将其附加到url,并用新url更新现有选项卡(来自同一域)。 这是我的代码:Javascript 将变量从函数传递到函数中的函数,javascript,function,google-chrome,google-chrome-extension,google-chrome-devtools,Javascript,Function,Google Chrome,Google Chrome Extension,Google Chrome Devtools,我正在尝试创建一个chrome扩展,它通过上下文菜单获取所选文本,将其附加到url,并用新url更新现有选项卡(来自同一域)。 这是我的代码: function soso(search_target){ alert(search_target); //search_target gets here successfully chrome.tabs.query({ url: "https://lightning.force.com/lightning/*
function soso(search_target){
alert(search_target);
//search_target gets here successfully
chrome.tabs.query({
url: "https://lightning.force.com/lightning/*"},
function(tabs, search_target){
if (tabs[0]){
chrome.tabs.update(tabs[0].id, {
url: "http://www.facebook.com"+search_target, //search_target doesnt get here
active: true
});
}
else{
alert("no window");
}
});
}
function selectionHandler (info, tab)
{
soso( info.selectionText);
}
function resetContextMenus ()
{
chrome.contextMenus.removeAll(
function()
{
var id = chrome.contextMenus.create( {
title: "Open in Salesforce",
contexts: [ "selection" ],
onclick: selectionHandler
} );
}
);
}
resetContextMenus();
问题是我无法将search\u target
传递到chrome.tabs.update
,我会在URL后面得到一个未定义的
关于如何传递这个变量有什么想法吗?让我们回顾一下我们的分析:
- 您尝试调用
,传递chrome.tabs.update
search\u target
- 在具有
参数的回调函数中搜索目标
- 该函数由chrome.tabs.query调用
- 而不是通过您的外部
功能
- 但是您在外部上下文中有一个有效的
搜索\u目标
- 无法从回调
函数的块中访问,因为未定义的具有类似名称的参数会将其隐藏
function soso(search_target){
alert(search_target);
//search_target gets here successfully
chrome.tabs.query({
url: "https://lightning.force.com/lightning/*"},
function(tabs){
if (tabs[0]){
chrome.tabs.update(tabs[0].id, {
url: "http://www.facebook.com"+search_target, //search_target doesnt get here
active: true
});
}
else{
alert("no window");
}
});
}
function selectionHandler (info, tab)
{
soso( info.selectionText);
}
function resetContextMenus ()
{
chrome.contextMenus.removeAll(
function()
{
var id = chrome.contextMenus.create( {
title: "Open in Salesforce",
contexts: [ "selection" ],
onclick: selectionHandler
} );
}
);
}
resetContextMenus();
尝试创建另一个变量并将数据附加到新变量,然后尝试将新附加的变量传递到url值