#javascript #google-chrome #google-chrome-extension
Вопрос:
НЕ удаляйте мой вопрос. Я просмотрел веб-страницы, документацию, я не знаю, почему это происходит, и удаление вопроса НЕ помогает. Других подобных вопросов у меня нет.
Вот так. Ниже показано, как, по моему мнению, это должно произойти. Но даже со всеми обещаниями асинхронности, которые я там размещаю, этого не происходит. Когда вызывается асинхронная функция, никто не ждет ее завершения. Idk, что еще можно сделать, кроме как связать все в асинхронной функции, которой я пытаюсь избежать. Помогите, пожалуйста.
Я пробовал использовать tabs= await getcurrenttab()
, но это вызывает ошибку, говоря, что это работает только с асинхронными функциями. Которым слушатель не является.
манифест.json
{ "manifest_version": 3, "name": "DHL Helper", "description": "This helper helps DHL's quality of life, improves mental health.", "version": "1.0", "action": { "default_icon": "icon.png", "default_popup": "popup.html" }, "content_scripts": [{ "matches":["*://servicenow.*.com/*", "http://*/*", "https://*/*"], "js": ["content_helper.js"] }], "permissions": [ "activeTab" ], "host_permissions": [ "http://www.blogger.com/", "*://*/*" ] }
popup.js
document.addEventListener('DOMContentLoaded', function() { console.log('got tabs id'); tab = getCurrentTab(); console.log('Active tab ' tab.id); }); async function getCurrentTab(){ console.log('trying to get tabs id'); let queryOptions = {active: true, currentWindow: true}; return await chrome.tabs.query(queryOptions) .then((tabs) =gt; { console.log('Obtained tab ID'); console.log(tabs); return tabs[0]; }) .catch((Error) =gt; { console.log('it failed'); console.error; return; }) }
Комментарии:
1. Вы пробовали использовать getCurrentTab().затем(…) ?
Ответ №1:
document.addEventListener('DOMContentLoaded', async function() { console.log('got tabs id'); tab = await getCurrentTab(); console.log('Active tab ' tab.id); });
Ваш подход уже был правильным, но если вы хотите использовать await в функции await, вы также должны сделать выполняющуюся функцию асинхронной.
Комментарии:
1. Спасибо. Я решил отступить и воспользоваться здравым смыслом и попробовал это сделать как раз перед тем, как вы ответили. Это мой первый раз, когда я создаю собственное расширение для целей QoL
2. @LuigiMackenzieC.Брито Тоже спасибо. Все бывает в первый раз 🙂
Ответ №2:
пользователь упоминает о попытке использовать =await getCurrentTab()
, но сталкивается с ошибкой, которая ожидает только асинхронных функций…
добавление async
функции прослушивателя событий устранило проблему
измените это:
document.addEventListener('DOMContentLoaded', function() {
к этому:
document.addEventListener('DOMContentLoaded', async function() {
Ответ №3:
вкладка не определена
var вкладка = getcurrentтаблица();
Комментарии:
1. спасибо, но разве это не определено, потому что функция ничего не вернула