Javascript 更新现有的Chrome选项卡,而不是打开新的
我创建了一个Chrome扩展,在选择文本时,它会使用所选文本提供指向Salesforce的上下文菜单链接:Javascript 更新现有的Chrome选项卡,而不是打开新的,javascript,google-chrome,google-chrome-extension,google-chrome-devtools,Javascript,Google Chrome,Google Chrome Extension,Google Chrome Devtools,我创建了一个Chrome扩展,在选择文本时,它会使用所选文本提供指向Salesforce的上下文菜单链接: function doSearch (search_target, tab) { chrome.tabs.create( { url : "https://my.salesforce.com/apex/BR_caseRedirectDependingLicense?number="+search_target.replace(/\D/g,''), s
function doSearch (search_target, tab)
{
chrome.tabs.create( {
url : "https://my.salesforce.com/apex/BR_caseRedirectDependingLicense?number="+search_target.replace(/\D/g,''),
selected : true,
index : tab.index + 1
} );
}
function selectionHandler (info, tab)
{
doSearch( info.selectionText, tab );
}
function resetContextMenus ()
{
chrome.contextMenus.removeAll(
function()
{
var id = chrome.contextMenus.create( {
title: "Open in Salesforce",
contexts: [ "selection" ],
onclick: selectionHandler
} );
}
);
}
resetContextMenus();
这里的目的是标记车票号码并在SF中快速打开它们,而且它工作得非常完美
然而,我想知道是否有可能更新一个开放的salesforce标签,而不是每次都启动一个新的标签
我尝试四处查看,发现以下示例扩展:
但它似乎根本不起作用(可能是因为它过时了)
我非常感谢您提供有关如何处理此问题的任何帮助/指导。是的,您可以这样做,您可以使用
chrome.tabs.update(…)
功能来完成,下面是一个示例,这将更新您单击上下文菜单项的选项卡:
function selectionHandler (info, tab) {
chrome.tabs.update(tab.id, {
url : "https://my.salesforce.com/apex/BR_caseRedirectDependingLicense?number="+info.selectionText.replace(/\D/g,''),
active : true
});
}
如果要先创建一个新选项卡,然后继续更新它,可以使用以下方法:
let tabId = -1;
function doSearch (search_target, tab)
{
const tabDetails = {
url : "https://my.salesforce.com/apex/BR_caseRedirectDependingLicense?number="+search_target.replace(/\D/g,''),
active : true,
index : tab.index + 1
};
if (tabId == -1) {
chrome.tabs.create(tabDetails, tab => {
tabId = tab.id;
});
} else {
// check if tab is still around
chrome.tabs.get(tabId, (tab) => {
if (tab) {
chrome.tabs.update(tab.id, tabDetails);
} else {
chrome.tabs.create(tabDetails, tab => {
tabId = tab.id;
});
}
});
}
}
除了这两个示例之外,您可能还需要查看,您可以使用它来查找特定的选项卡`
此外,在所有这些示例中,我使用了
active
而不是selected
,因为selected
已被弃用。^这将打开第一个选项卡,错误为:>未选中runtime。lastError:没有id为462的选项卡。附加链接无法打开,也无法刷新到该选项卡。@Joey以下哪个示例会产生该错误?如果是第二个,您是否包含了chrome.tabs.get(tabId,…)
调用?该调用确保该选项卡仍然存在。错误消息表明您正在尝试更新一个不存在的选项卡,我看不出任何示例会产生该错误的原因。