У меня создалось впечатление, что content_scripts выполнялись прямо на странице, но теперь кажется, как будто существует некоторое продолжение игры в песочнице.
Я работаю над расширением для входа всего трафика XHR сайта (для отладки и других целей разработки), и в консоли, следующих работах кода сниффинга:
var o = window.XMLHttpRequest.prototype.open;
window.XMLHttpRequest.prototype.open = function(){
console.log(arguments, 'open');
return o.apply(this, arguments);
};
console.log('myopen');
console.log(window, window.XMLHttpRequest, window.XMLHttpRequest.prototype, o, window.XMLHttpRequest.prototype.open);
Это регистрирует сообщение каждый раз, XHR отправляется. Когда я поместил это в расширение, однако, реальный прототип не становится измененным. По-видимому, окно. XMLHttpRequest.prototype, который видит мой сценарий, отличается от сценария фактической страницы.
Есть ли некоторый путь вокруг этого? Кроме того, это играет в песочнице поведение, зарегистрированное где-нибудь? Я озирался, но ничего не мог найти.
Вы не можете этого сделать. Согласно документации :
Однако сценарии содержимого имеют некоторые ограничения. Они не могут:
- Использовать chrome. * API (кроме частей chrome.extension)
- Использовать переменные или функции, определенные на страницах их расширений
- Использовать переменные или функции, определенные веб-страницами или другими скриптами содержимого
- Сделать межсайтовый XMLHttpRequests