Я хотел бы иметь возможность отображать переменную с функциональной областью, которая является частью javascript веб-сайта (не моего).
Вот упрощенный пример:
function addHooks(e, t, n, i) {
var props = { // Would like to expose this
update: function() { ... },
remove: function() { ... },
find: function() { ... },
};
...
}
В приведенном выше примере я хотел бы открыть переменную props
, чтобы мой webextension
мог затем получить к ней доступ для изменения поведения веб-сайта. Обратите внимание, что веб-сайт, который обслуживает этот файл JS, не находится под моим контролем, и поэтому я не могу просто изменить исходный файл для экспорта этой переменной. Тем не менее, я полностью готов изменить окончательный код, который запускает браузер (я просто не знаю, как это сделать). Файл javascript, содержащий функцию addHooks
, кажется, добавляется динамически через XHR
.
Хотя я понятия не имею, как это сделать программно, мне удалось установить точку останова, а затем выдать window.siteController = props
в консоли разработчика браузера. К сожалению, ручное вмешательство пользователя — это не то, что я могу упаковать и распространять.
Один из методов, с которым я экспериментировал, заключается в создании запроса AJAX для JS-файла, изменении содержимого его скрипта и добавлении его на страницу.
Существует ли канонический программный способ раскрытия переменной в области действия функции?
return props;
- person Al.G.   schedule 15.12.2016XHR
для удовлетворения моих потребностей. Я указал одно потенциально жизнеспособное решение, но я не знаю, как его реализовать. Я также не знаю, может ли это на самом деле работать. Возможно, мне следует лучше понять проблему, чтобы я мог лучше ее объяснить. - person Guru Prasad   schedule 15.12.2016@
перед ним. Например, для меня это будет@Makyen
. Если вы сделаете это первым в своем комментарии, система предложит автозаполнение предложений от тех, кто уже разместил комментарии к этому ответу/вопросу. Первоначальный постер ответа/вопроса, который вы комментируете, всегда будет уведомлен. Этот мета-пост содержит дополнительную информацию. - person Makyen♦   schedule 15.12.2016