Вот как работает Обещание ....
browser.tabs.executeScript(tabId, {
file: '../path/to/content-script.js',
frameId: 0,
runAt: 'document_idle'
})
.catch(e => console.log(e.toString()));
catch
в выше будет ловить ошибки, если tabs.executeScript
не удалось ввести.Это может также показать некоторые ошибки при синтаксическом анализе файла для вставки, если файл JS имеет ошибки синтаксического анализа (недопустимый JS).Это не имеет ничего общего с тем, что « .. / path / to / content-script.js » будет делать впоследствии.
Так что, как только оно было введено, то выше обещание выполняется.
Если введенный скрипт имеет возврат sync , то он может быть получен tabs.executeScript
через then()
например,
browser.tabs.executeScript(tabId, {
file: '../path/to/content-script.js',
frameId: 0,
runAt: 'document_idle'
})
.then(result => {})
.catch(e => console.log(e.toString()));
В случае async функций, таких как .addEventListener
, которые произойдут позже, затем ничего не будет возвращено в tabs.executeScript
Чтобы отловить ошибки в скриптах контента, вы можете сгенерировать сообщение об ошибке в скрипте контента или отправитьсценарий сообщения в фоновом режиме, например sendMessage
& onMessage.addListener
tabs.executeScript ()
Обещание, которое будет выполнено с массивом объектов, представляющихРезультат сценария в каждом введенном кадре.
Результатом сценария является последний оцененный оператор, который похож на то, что будет выводиться (результаты, а не любой вывод console.log ()), если вы выполнили сценарий ввеб-консоль.Например, рассмотрим сценарий, подобный следующему:
var foo='my result';foo;
browser.tabs.executeScript(tabId, {
file: '../path/to/content-script.js',
frameId: 0,
runAt: 'document_idle'
})
.then(result => {
// result is returned by the Promise
if (result === []) {
// it was fine but there was nothing to return
}
else if (result[0]) {
// result[0] is return from the promise
}
})
.catch(e => console.log(e.toString()));
Теперь, если вы хотите получить возврат (он должен быть синхронизирован или вы должны привязать его к другому обещанию), верните что-нибудь из .. / путь / к / контент-script.js'