Как сказал @MrGlass, в настоящее время расширения Chrome выполняются в отдельной среде, ограничивая доступ к фактическому объекту window
и предоставляя дубликат, который действителен только для расширения.
Чтобы решить эту проблему, мы можем вставить элемент сценария непосредственно в документ. Таким образом, вы получаете доступ к среде документа и реальному объекту window
.
Сначала создайте функцию (я также добавил «подтвердить», потому что некоторые подтверждения меня так раздражали):
var disablerFunction = function () {
window.alert = function alert(msg) { console.log('Hidden Alert ' + msg); };
window.confirm = function confirm(msg) {
console.log("Hidden Confirm " + msg);
return true; /*simulates user clicking yes*/
};
};
Теперь, что мы собираемся сделать, это преобразовать эту функцию в текстовый скрипт и заключить ее в круглые скобки (чтобы избежать возможных конфликтов с фактическими vars в среде страницы):
var disablerCode = "(" + disablerFunction.toString() + ")();";
И, наконец, мы добавляем элемент скрипта и сразу удаляем его:
var disablerScriptElement = document.createElement('script');
disablerScriptElement.textContent = disablerCode;
document.documentElement.appendChild(disablerScriptElement);
disablerScriptElement.parentNode.removeChild(disablerScriptElement);
Это может представлять интерес:
https://github.com/flatiron/nconf
Иерархическая конфигурация node.js с файлами, окружением переменные, аргументы командной строки и слияние атомарных объектов.
Ну, я поместил свои маршруты в файл json, который я прочитал в начале, и в цикле for в app.js установил маршруты. В файле route.json указывается, какой вид следует вызвать, и ключ для значений, которые будут отправлены в маршрут.
Это работает для многих простых случаев, но мне пришлось вручную создавать некоторые маршруты для особых случаев.