编写chrome扩展名以使用保存的预设更改基本URL

时间:2016-09-30 11:00:41

标签: javascript google-chrome google-chrome-extension servicenow

我在5种不同的环境中使用SAAS产品(ServiceNow)。我发现自己经常切换环境,唯一的区别是基本URL。

我从未做过任何插件工作,所以我不确定这是否可行但是我想设置一些基本的URL预设,并且能够获取当前的URL并且只需交换基础点击一下按钮。

1 个答案:

答案 0 :(得分:2)

这完全有可能。

一般方向的指针是chrome.tabs API:您将能够使用它操纵标签的URL。

UI方面,您在工具栏上看到一个名为Browser Action的按钮;你可以在点击它时简单地做一些事情,或者你可以从中删除一个小的UI页面。您可能还对chrome.commands API感兴趣添加键盘快捷键。

这是一个可能的最简单架构的模拟:一个后台脚本,在点击时在两个基域之间交换(注意它需要"activeTab" permission)。

var BASE1 = "example.com";
var BASE2 = "example.org";

// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}

function baseToRegExp(base) {
  return new RegExp("^(https?:\/\/[^\/]*)(" + escapeRegExp(base) + ")/");
}

var BASE1RegExp = baseToRegExp(BASE1);
var BASE2RegExp = baseToRegExp(BASE2);

chrome.browserAction.onClicked.addListener(function(tab) {
  if (tab.url.match(BASE1RegExp)) {
    chrome.tabs.update(tab.id, {
      url: tab.url.replace(BASE1RegExp, "$1"+BASE2+"/")
    });
  } else if (tab.url.match(BASE2RegExp)) {
    chrome.tabs.update(tab.id, {
      url: tab.url.replace(BASE2RegExp, "$1"+BASE1+"/")
    });        
  }
});

Chrome扩展程序有许多初学者教程;我建议从Overview page开始。