Chrome API, как определить открылась ссылка или нет

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 183
Реакции
10 843
Чтото раньше никогда не сталкивался а в итоге нигде в доке найти не могу как, казалось бы, простейшее действие сделать.
В браузерном расширении открываю вкладку через chrome.tabs.create
А как определить, что она открылась без ошибок и что url , который я туда открываю валидный и открылся нормально? Дока чудовищно бестолковая, куда в этой функции обработчик ошибок совать неясно :(
 

qsedftghk

фея
15 лет на форуме
Сообщения
2 032
Реакции
1 198
Хелпы человеческие исчезли как вид. Не оно?
Как я понимаю, сначала можно лишь проверить открылась, или не открылась вкладка (см. код или используя событие tabs.onUpdatedили .webNavigation.onCompletedtabs.create ), а уж потом, рыться в некоем Promise на предмет информации о созданной вкладке.
Но я так... мимо проходил, далёк от этого всего.

Return value
A Promise that will be fulfilled with a tabs.Tab object containing details about the created tab. If the tab could not be created (for example, because url used a privileged scheme) the promise will be rejected with an error message.
The promise returned by browser.tabs.create() resolves as soon as the tab has been created. The tab may still be loading. To detect when the tab has finished loading, listen to the tabs.onUpdated or the webNavigation.onCompleted event before calling tabs.create.

Код:
function onCreated(tab) {
  console.log(`Created new tab: ${tab.id}`)
}

function onError(error) {
  console.log(`Error: ${error}`);
}

browser.browserAction.onClicked.addListener(function() {
  var creating = browser.tabs.create({
    url:"https://example.org"
  });
  creating.then(onCreated, onError);
});
 

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 183
Реакции
10 843

qsedftghk

фея
15 лет на форуме
Сообщения
2 032
Реакции
1 198
но что-то похожее должно же быть. Хотя, не удивлюсь, если это вообще не предусмотрено в целях повышения безопасности и бла-бла-бла....
 

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 183
Реакции
10 843
А! Более того, create ничего не возвращает
В нем предусмотрена callback функция, однако в ней все нормально, никаких ошибок, таб создан успешно :(
 

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 213
А как определить, что она открылась без ошибок и что url , который я туда открываю валидный и открылся нормально?
В современном контенте что есть "открылся нормально"?
Сделай функцию с fetch внутри background и скорми в нее url. И там уже разбирай статус ответа, контент и что хочешь.
 

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 183
Реакции
10 843
В современном контенте что есть "открылся нормально"?
Ну вот смотри например в консоли ошибки, как их поймать из экстеншна?
1622826501504.png

внутри background и скорми в нее url. И там уже разбирай статус ответа, контент и что хочешь
Тото и оно что в таком случае нет ни content ни background :(
Урл может быть живой просто в определенный момент по причине скажем сбоя сети не открылся
Как понять что его надо пнуть еще раз?
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
response.status опять же проверить нельзя?
 

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 183
Реакции
10 843
try{}catch(e){} не ловит? или callback на error дополнительный может есть?
Куда его вставлять? Повторяю, колбэк из create возвращает что все зашибись, ошибки нигде никакой кроме консоли нет. Бэкграунда и контента тоже нет - как понять что загрузилась заглушка вместо страницы?
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
да я откуда ж знаю )
а нельзя таб открыть пустым, и сделать туда fetch?
 

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 183
Реакции
10 843

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 183
Реакции
10 843

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 213
Хорошо, в какой момент искать ожидаемое? В случае нормальной страницы я проверял в контенте на onload а тут где?
У тебя contents скрипт подключен же? Из него в открытый документ в body добавляешь скрипт, который будет проверять контент.
 

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 183
Реакции
10 843
Гм как то мудрено очень но надо попробовать
 

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 183
Реакции
10 843
Ну вообще говоря, я как то не ожидал, что для такой простой вещи придется jQuery вешать к экстеншну '))'