LINUX.ORG.RU
ФорумTalks

Поясните за WebExtensions и на сколько это плохо

 , , ,


0

10

Проскочила тут новость, что FF собирается отказывается от XUL дополнений в следующем году. И я впал в ступор, вот например Vimperator нет под Хромогору т.к. дополнения не могут менять дизайн хромоноги, в случае перехода FF на WebExtension мы получим те-же грабли? Или VideoDownloadHelper, не смог найти в хромо-сторе его аналога(те что есть работают через какие-то левые сайты и то через раз, а ведь WDH еще и конвертировать мог и выбирать в каком качестве загружать и пр. фишки), это тоже ограничение WebExtensions? Еще AdBlock, который в Хромоногах долгое время мог только через css скрывать(в отличие от FF-шного Adblock+, который по возможности блокирвоал запросы), но вроде как uMatrix позволяет блокировать запросы, тоесть в ранних версиях AdBlock4Chrome девелоперы не осиливали WebExtension до конца или Хромодевелоперы ослабили гайки?

Deleted

Плюсую вопрос. Вроде как унификация и прочие хорошие слова, но тут в каждом первом треде про FF вопят про тотальную ограниченность и мертворожденность этих самых WebExtensions.

intelfx ★★★★★ ()

Не писал под WE, но говорят, что по сравнению с xul это евнух. По факту в гуглобраузерах аддоны ничего с тем, как работает браузер, сделать не могут.

WebExtensions-аддоны это безопасность через ненужность.

Bfgeshka ★★★★★ ()

Для скачки видео с ютуба и не только использую плагин от savefrom.net. Ни разу не подводил. То что он работает через «какой-то левый сайт» - всё равно, я ничего не потеряю от того, что «какой-то левый сайт» узнает, какие видео я скачиваю. Встраивает прямо в вебстраницу соответствующие кнопки, в том числе позволяет выбрать качество. Работает не только для ютуба, но и для всяких вконтактиков и т. д.

AdBlock в настоящий момент вроде как умеет блокировать запросы, а не просто скрывать элементы. Раньше с этим были проблемы, да.

Но то, что расширениям не дают вмешиваться в потроха браузера считаю плохим. На то они и расширения, чтобы менять поведение браузера.

KivApple ★★★★★ ()

Или VideoDownloadHelper, не смог найти в хромо-сторе его аналога(те что есть работают через какие-то левые сайты и то через раз, а ведь WDH еще и конфертировать мог и выбирать в каком качестве загружать и пр. фишки), это тоже ограничение WebExtensions?

Его нет потому, что запрещено правилами Chrome Store, а не потому, что WebExtensions мешает (это такая примитивная фича, что её можно было бы сделать даже банальным Greasemonkey-скриптом).

Deleted ()

Красавчики, вангую резкое падение доли firefox в несколько раз. Ибо нахер кому нужна копия хрома, только с худшим движком?

templarrr ★★★★★ ()
Ответ на: комментарий от Deleted

По этим же причинам приложений с аналогичным функционалом нет и на Google Play (раньше были, но в одно время их выпилили).

Deleted ()

А возможен качественный Adblock в WebKit-based браузерах? Пробовал uBlock+Chromium, Qupzilla и Otter — везде реклама мелькает перед скрытием.

xdimquax ★★★★ ()
Ответ на: комментарий от templarrr

Красавчики, вангую резкое падение доли firefox в несколько раз. Ибо нахер кому нужна копия хрома, только с худшим движком?

У меня такой же прогноз. Думаю тормозилла этого падения не выдержит и со временем наконец-то загнётся, дабы из её пепла опять мог возродиться адекватный браузер.

h578b1bde ★☆ ()
Ответ на: комментарий от templarrr

Да, скорее всего не «в несколько раз», а фактически сдохнет.

najlus ★★★★★ ()
Ответ на: комментарий от xdimquax

реклама мелькает перед скрытием

ни разу такого не наблюдал

eternal_sorrow ★★★★★ ()

XUL, WebExtensions и расширения браузера Firefox (аддоны) это три разные не зависящие друг от друга детали.

XUL это такой xml-based язык разметки, при помощи которого описывают интерфейс. Отличительная черта ксулевого интерфейса это то что он для своего построения использует системные элементы окон. Звучит красиво но на деле они всегда выглядели и работали криво, а код для реализации этого самого ксула наверняка представляет собой нагромождение костылей и подпорок под каждую ОС. Заменой xul является html.

Сегодня для написания расширений для браузера, мозилла предлагает использовать Add-ons SDK. Что это такое (в краце): ставится нода, ставится jpm (собственно сам sdk) через npm, структура аддонов очень похожа на вебкитовские WebExtensions - манифест фаил (тут он называется package.json), background скрипты и страницы, интерфейс описывается на html+css, очень похожий (опять же) прием по подключению и использованию API объектов.

Но на этом сходства заканчиваются, если в хромоногих расширениях есть 2 рабочих изолированных пространства (background и content) то у аддонов только одно (аналогичное background), так же у аддонов помимо всяких High-Level API есть и большой набор Low-Level, включая те самые компоненты, и можно например даже напрямую обращаться к системному API (то есть то что делал ксул неявно, нам заботливо предлагают с этим потрахаться самим, вкусить так сказать прелесть написания чего то под системные API и фреймворки). Сами модули подключаются не как в хроморасширениях через разрешения в манефесте, а как в node.js через require("sdk/tabs") например.

Сложно сказать что лучше, аддоны как то больше походят на среду для разработки приложений чем на расширения для управления поведением браузера, там где хватает WebExtensions лучше писать под них наверное (благо фаирфокс поддерживает и то и то), хотя по идее можно и в одном проекте реализовать поддержку обоих - независимый код и html вынести отдельно, браузероспецифичный отдельно, манифесты хоть и лежат оба в корне но имеют разные имена и потому не пересекаются (хотя интересно как поведет себя FF если ему такой пакет скормить, как он его воспримет - как аддон или хроморасширение).

Алсо, если интересно как выглядит использование системных апи из js кода в аддонах, то примерно так (тут должны были падать системные координаты курсора, не помню все ли правильно в этом коде или нет):

const { Cu } = require("chrome");
        Cu.import("resource://gre/modules/ctypes.jsm");

let CoreGraphics = ctypes.open("/System/Library/Frameworks/CoreGraphics.framework/CoreGraphics");
let CoreFoundation = ctypes.open("/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation");

let CGEventRef = ctypes.voidptr_t;
let CGEventSourceRef = ctypes.voidptr_t;
let CGEventCreate = CoreGraphics.declare("CGEventCreate",
                                         ctypes.default_abi,
                                         CGEventRef,
                                         CGEventSourceRef);
let CGFloat = ctypes.voidptr_t.size == 4 ? ctypes.float : ctypes.double;  // 64bit its double, in 32bit its float
let CGPoint = new ctypes.StructType("CGPoint",
                                     [ { "x" : CGFloat },
                                       { "y" : CGFloat } ]);
let CGEventGetLocation = CoreGraphics.declare("CGEventGetLocation",
                                              ctypes.default_abi,
                                              CGPoint,
                                              CGEventRef);
let CFTypeRef = ctypes.voidptr_t;
let CFRelease = CoreFoundation.declare("CFRelease",
                                       ctypes.default_abi,
                                       ctypes.void_t,
                                       CGEventRef);

let event = CGEventCreate(null);
let cursor = CGEventGetLocation(event);

CFRelease(event);

Cu.reportError(cursor);

console.log(cursor)

uin ★★★ ()
Последнее исправление: uin (всего исправлений: 1)
Ответ на: комментарий от Deleted

Ну вообще зашибись, а альтернативной помойки для плагинов у них нет?

Deleted ()
Ответ на: комментарий от xdimquax

Раньше в Chromuim+uBlock действительно мигала, сейчас стало получше, хотя как они этого добились понятия не имею. А в Qupzilla, Otter и пр. да - беда.

Deleted ()

Ах да, пояснить насчет WebExtensions
WebExtensions заточен на управление элементами браузера и его внутренним поведением (это в дополнение к стандартным JS API), вместо чтения очередного мнения с дивана лучше просто открыть и полистать список доступных апи что бы нарисовать себе в голове примерную картину какие вещи в них можно реализовать а какие нет https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API (конечно у хромоногих список доступного больше, но у гугла какая то уе-щная документация)

uin ★★★ ()
Последнее исправление: uin (всего исправлений: 1)
Ответ на: комментарий от uin

Я к web/js-dev отношения не имею, так что этот список мне мало о чем говорит. Вот например tabs, вроде как можно управлять вкладками, а дополнений, для Хромого, что их вертикально размещают в природе пока нет.

Deleted ()
Ответ на: комментарий от Deleted

Вкладки которые ты видишь в хромом и лисе, их рисует системый тулкит, что бы их изменить необходимо вмешаться в него, а сделать это возможно только если браузер предоставляет специальный хак который может это сделать (и из которого мозила в очередной раз пытается состряпать какое то подобие API). В противном случае у JS кода внутри нет никакого представления этих элементов которые ты кликаешь мышкой и которые называешь вкладками.

tabs API позволяет создавать, переключаться и даже общаться фоново c конкретной вкладкой. Если бы можно было системные спрятать, а свои написать на том же html и расположить фиксированно в любом месте окна браузера, то им можно было бы задать логику при помощи этого API и это бы позволяло организовать их как угодно и вообще сделать их такими, какими хочется, но увы.

В вивалди вроде весь интерфейс написан на html и там есть глобальные фиксированные поля, не знаю как там с пространством для маневров, не тыкал его особо, но посыл там правильный.

uin ★★★ ()
Последнее исправление: uin (всего исправлений: 1)
Ответ на: комментарий от uin

В вивалди вроде весь интерфейс написан на html и там есть глобальные фиксированные поля, не знаю как там с пространством для маневров, не тыкал его особо, но посыл там правильный.

В Vivaldi можно вкладки сбоку размещать, но сама идея писать браузер на node.js кажется мне дикой.

Тоесть, без дополнительных костылей управлять размещением вкладок на WebExtensions не получится, так и запишем.

Deleted ()
Ответ на: комментарий от Deleted

без дополнительных костылей на WebExtensions

Нет, на WebExtensions можно только управлять их поведением и все, а вот Firefox аддонам доступны наборы дополнительных костылей позволяющих изменить их расположение и прочее.

но сама идея писать браузер на node.js кажется мне дикой

Это не браузер, это Addon SDK на ноде (средства разработки тобиш)
Если ты про html интерфейс, то подумай сам, сегодня в каждом браузере есть такой огроменный набор всего что можно запросто интерфейс любой ОС на этом описать (Даже Mac OS X с ее доком, глобальными меню и прочим), не на самом низком уровне конечно а где то вот на уровне UI и даже Applications (какой нибудь аудиоплеер/почтовик - запросто), и при этом свой интерфейс браузер тащит из элементов ОС из под которой работает, все к тому идет что от этого будут избавляться, окно настроек Firefox и всякие about:newtab и прочие уже переделаны на html, от чего кстати стали только лучше

uin ★★★ ()
Ответ на: комментарий от uin

Всё доходчиво и понятно. Спасибо большое за пояснение :)

xDShot ★★★★★ ()
Ответ на: комментарий от uin

Нет, на WebExtensions можно только управлять их поведением и все, а вот Firefox аддонам доступны наборы дополнительных костылей позволяющих изменить их расположение и прочее.

Ок. Будем надеяться, что эти костыли они не выкинут вместе с XUL.

Deleted ()

ну все полезное перестанет работать, теже табы сбоку. еще один профит - все будет тупить, ну и еще один - куча js типа погромистов полезут писать «полезные» дополнения.

я надеюсь ff сдохнет и вместо него что нить другое будет, где и табы и все прочее, вроде как уже было с netscape (хотя тогда тому были другие предпосылки).

alwayslate ★★ ()

(очень не уверен; если где-то неправ, поправьте)

  • Почему лиса сбирается выкинуть расширения, которые юзают потроха?

В далеком будущем она хочет выкинуть XUL и XPCOM и сменить потроха

  • Как мне жить без vimperator/tst/etc?

Это только если они прибьют гвоздями интерфейс. Скорее всего, когда они избавятся от SDK и XUL/XPCOM, интерфейс можно будет менять как-то похоже на то, как меняют странички через webext(который, кстати, планируют сделать менее ограниченным, чем у хрома)

И кстати, меня как-то не радуют постоянные пункты в ченджлогах юзающих потроха расширений вида “совместимость с расширением X”.

f1u77y ★★★ ()
Ответ на: комментарий от uin

Нет, на WebExtensions можно только управлять их поведением и все, а вот Firefox аддонам доступны наборы дополнительных костылей позволяющих изменить их расположение и прочее.

Значит Tree Style Tab на WebExtensions сделать нельзя?

templarrr ★★★★★ ()
Ответ на: комментарий от templarrr

Сделать можно, но увидеть их можно будет только кликнув на значек расширения в панели и только в качестве выпадающего списка или открывающегося в новой вкладке, никаких других размещений браузеры для расширений не предусматривают.

Либо размещать интерфейс в окне каждой вкладки и каким то образом ими управлять (хотя это и не обязательно, достаточно интерфейс в активной вкладке обновлять и при переключении переносить на новую, или вовсе один и тот же элемент по вкладкам таскать, не знаю даже можно ли так, если можно, то это весьма круто)

uin ★★★ ()
Ответ на: комментарий от f1u77y

В далеком будущем

через год

У всех разные понятия о времени...

fornlr ★★★★★ ()
Ответ на: комментарий от fornlr

через год

я имел в виду, избавиться не от возможнсти давать аддонам юзать это, а вообще убрать это из браузера

f1u77y ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.