Невозможно отправить внутренний HTML с помощью chrome.scripting.executeScript в расширении Chrome.Javascript

Форум по Javascript
Ответить
Гость
 Невозможно отправить внутренний HTML с помощью chrome.scripting.executeScript в расширении Chrome.

Сообщение Гость »


Я разрабатываю расширение Chrome, целью которого является захват внутреннего HTML-кода страницы текущей вкладки при нажатии кнопки во всплывающем окне расширения и отправка его на сервер. Однако я столкнулся с проблемой с кодом, использующим chrome.scripting.executeScript, поскольку он не отправляет данные InnerHTML должным образом.

manifest.json

{ «manifest_version»: 3, "name": "Веб-скребок", "версия": "1.0", "description": "Извлечь внутренний HTML из веб-страниц", "разрешения": ["activeTab"], "действие": { "default_popup": "popup.html", "default_icon": { "128": "logo.png" } }, "значки": { "128": "logo.png" }, "host_permissions": [ "http://localhost:8000/*" ] } popup.html

Веб-скребок Удаление страницы Загрузка...

script.js

document.getElementById('scrapeButton').addEventListener('click', () => { chrome.scripting.executeScript({ цель: { tabId: chrome.tabs.getCurrent().id }, функция: ScrapPage }); }); window.addEventListener("load", windowLoaded, false); функция windowLoaded() { оповещение(document.documentElement.innerHTML); } функция ScrapePage() { const innerHTML = document.body.innerHTML; fetch('http://localhost:8000/receive-data', { метод: 'POST', заголовки: { «Тип контента»: «приложение/json», }, тело: JSON.stringify({innerHTML}), }) .then(ответ => ответ.json()) .then(данные => { const шуточныйЭлемент = document.getElementById('jokeElement'); шуткаЭлемент.innerHTML = "привет"; console.log(data.message); }); } Функция ScrapePage должна захватывать внутренний HTML-код и отправлять его в фоновый скрипт для дальнейшей обработки. Однако, похоже, это работает не так, как предполагалось.

бэкэнд-код -

app.py
из fastapi импортировать FastAPI из pydantic импорта BaseModel приложение = ФастAPI() класс DataItem(BaseModel): внутреннийHTML: ул @app.post("/receive-data/") асинхронная защита получения_данных (данные: DataItem): print("Полученные данные:") печать (data.innerHTML) return {"message": "Данные успешно получены"}
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»