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

  • Автор темы Автор темы _MBK_
  • Дата начала Дата начала

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
34 055
Реакции
11 157
Чтото раньше никогда не сталкивался а в итоге нигде в доке найти не могу как, казалось бы, простейшее действие сделать.
В браузерном расширении открываю вкладку через chrome.tabs.create
А как определить, что она открылась без ошибок и что url , который я туда открываю валидный и открылся нормально? Дока чудовищно бестолковая, куда в этой функции обработчик ошибок совать неясно :(
 
Хелпы человеческие исчезли как вид. Не оно?
Как я понимаю, сначала можно лишь проверить открылась, или не открылась вкладка (см. код или используя событие 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);
});
 
но что-то похожее должно же быть. Хотя, не удивлюсь, если это вообще не предусмотрено в целях повышения безопасности и бла-бла-бла....
 
А! Более того, create ничего не возвращает
В нем предусмотрена callback функция, однако в ней все нормально, никаких ошибок, таб создан успешно :(
 
А как определить, что она открылась без ошибок и что url , который я туда открываю валидный и открылся нормально?
В современном контенте что есть "открылся нормально"?
Сделай функцию с fetch внутри background и скорми в нее url. И там уже разбирай статус ответа, контент и что хочешь.
 
В современном контенте что есть "открылся нормально"?
Ну вот смотри например в консоли ошибки, как их поймать из экстеншна?
1622826501504.png

внутри background и скорми в нее url. И там уже разбирай статус ответа, контент и что хочешь
Тото и оно что в таком случае нет ни content ни background :(
Урл может быть живой просто в определенный момент по причине скажем сбоя сети не открылся
Как понять что его надо пнуть еще раз?
 
response.status опять же проверить нельзя?
 
try{}catch(e){} не ловит? или callback на error дополнительный может есть?
Куда его вставлять? Повторяю, колбэк из create возвращает что все зашибись, ошибки нигде никакой кроме консоли нет. Бэкграунда и контента тоже нет - как понять что загрузилась заглушка вместо страницы?
 
да я откуда ж знаю )
а нельзя таб открыть пустым, и сделать туда fetch?
 
Хорошо, в какой момент искать ожидаемое? В случае нормальной страницы я проверял в контенте на onload а тут где?
У тебя contents скрипт подключен же? Из него в открытый документ в body добавляешь скрипт, который будет проверять контент.
 
Гм как то мудрено очень но надо попробовать
 
Ну вообще говоря, я как то не ожидал, что для такой простой вещи придется jQuery вешать к экстеншну '))'