1

Я работаю с предложением SAAS (ServiceNow) с 5 различными средами. Я часто переключаю среды, где единственное различие - это базовый URL.Написание расширения хром для изменения базового url с сохраненными пресетами

Я никогда не делал каких-либо подключаемых модулей, поэтому я не уверен, что это возможно, но я хотел бы установить несколько предварительных настроек базового URL и иметь возможность использовать текущий URL-адрес и просто поменять базу одним нажатием кнопки.

+2

В следующий раз, когда вы зададите вопрос, не включайте «шум», описывающий, как вы уверены, что этот вопрос плох. Это не помогает вашему делу. См. [Как спросить] (https://stackoverflow.com/help/how-to-ask). – Xan

+0

хорошая точка спасибо! –

ответ

2

Это вполне возможно.

Указатель в общем направлении - это chrome.tabs API: с ним можно будет манипулировать URL-адресом вкладки.

UI-wise, вы получаете кнопку на панели инструментов, которая называется Browser Action; вы можете просто сделать что-то, когда вы нажмете на него, или вы можете удалить небольшую страницу пользовательского интерфейса. Вы также можете быть заинтересованы в 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 Extensions; Я бы рекомендовал начинать с Overview page.

+0

wow говорить о ноль герою! –