На конференции разработчиков I/O 2019 компания Google представила новую технологию под названием «порталы», которая призвана обеспечить новый способ загрузки и навигации по веб-страницам.

По словам Google, «порталы» работают с помощью нового HTML-тега под названием <portal>. Этот тег работает аналогично классическим тегам <iframe>, позволяя веб-разработчикам вставлять удалённый контент на свои страницы.

По сути, <portal> — это более продвинутая и современная версия <iframe>. Самая главная разница в том, что <portal> позволяет перемещаться внутри контента, который внедрён на страницу извне, а <iframe> не позволяет этого по соображениям безопасности.

Более того, <portal> может переписывать URL в адресной строке браузера, то есть этот тег полезнее в качестве инструмента навигации. Опять же, <iframe> на такое не способен.

Вот таблица со сравнением <portal> и <iframe>, из презентации Google.

Порталы Фреймы
Создание <portal src="..."></portal> <iframe src="..."></frame>
Поддержка навигации Есть Нет
Возможность встраивания Есть Есть
Контекст навигации Всегда верхний уровень Вложены в дерево
Коммуникации только postMessage Доступ через WindowsProxy

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

Например, когда пользователь просматривает новостной сайт и заканчивает чтение страницы, то есть доходит до нижней её части, то ссылки на «похожие статьи» будут встроены в качестве порталов. Зачем веб-разработчику оформлять их таким образом? Преимущество использования порталов по сравнению с классическими ссылками заключается в том, что содержимое внутри порталов может быть предварительно загружено и предварительно отрендерено с загрузкой всего дерева DOM, то есть оно отобразится мгновенно.

Эту функцию впервые анонсировали на саммите Chrome Dev в ноябре прошлого года, но теперь порталы поддерживаются в последней версии Chrome Canary для Android, Mac, Windows, Linux и Chrome OS.


Правда, по умолчанию она пока отключена. Чтобы её включить в Chrome Canary, следует активировать флаг порталов в настройках chrome://flags/#enable-portals.



На данный момент только Chrome поддерживает эту технологию, другие браузеры пока не выразили интереса. Но если у вас подходящий браузер, то можно поэкспериментировать с порталами на демо-странице. Там указываете адрес любой страницы, сайт сгенерирует ссылку в формате <portal src="..."></portal> — вы можете перейти по ней и оценить, насколько быстро осуществляется переход на предварительно отрендеренную страницу.



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

Внедрив этот тег в свой браузер, Google подала его на утверждение в WCIG. Если разработчики других браузеров поддержат инициативу (а что им остаётся в условиях фактической монополии Chrome), то технология может стать новым стандартом, заменив привычные фреймы. Порталы позволяют пользователю смотреть/слушать внедрённый контент, а затем легко переходить на его исходную страницу, где можно оставлять комментарии или открывать другие страницы.

Более подробную техническую информацию о порталах см. в черновике стандарта WICG и документации Google.

Некоторые комментаторы на форумах выражают опасение, что новая функция может быть полезна Google для отслеживания пользователей. Ведь какая ситуация сейчас? Многие люди сразу после подключения к интернету заходят на Google, ищут нужный сайт — и уходят с Google. Нехорошо. А после внедрения порталов получится, что пользователь нажмёт на ссылку в результатах поиска — страница загрузится как портал, адрес в поисковой строке поменяется, как и раньше, но фактически человек остаётся на сайте Google — и компания может отслеживать его действия. Впрочем, это лишь версия. Возможно, Google на самом деле хочет сделать более удобной работу пользователей и вовсе не думает о собственных интересах.

Комментарии (36)


  1. u_235
    11.05.2019 15:17
    +22

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

    То есть память будет потреблядь ещё больше, ну и тормозить — тоже.


    1. ferosod
      11.05.2019 20:35
      +5

      Потреблядь. Это вы хорошо сказали.


  1. EviGL
    11.05.2019 16:33
    +23

    Хорошо быть гуглом: придумал новую крутую фичу для embed'ов YouTube, пошёл добавил её в веб стандарты.


    1. mapron
      11.05.2019 17:19
      +2

      Есть и положительные моменты такой монополии — открытые стандарты VP9, AV1.

      Хотя конечно только наивный будет верить в

      google… вовсе не думает о собственных интересах.


  1. Agel_Nash
    11.05.2019 17:48

    Логичное продолжение развития AMP технологии


    1. adictive_max
      12.05.2019 08:13

      Это не имеет ничего общего с AMP-«технологией»


      1. Agel_Nash
        12.05.2019 09:32

        Я имел в виду, что порталы скорее всего начнут использовать и там. А так, да — ничего общего нет.


  1. ReklatsMasters
    11.05.2019 18:27
    +2

    Возможно, Google на самом деле хочет сделать более удобной работу пользователей и вовсе не думает о собственных интересах.

    И правда смешно. Гугл в первую очередь думает как заработать больше денег. И через внедрение подобных стандартов стремится замкнуть весь веб на себе. Достаточно опасная тенденция.


    1. nrgian
      11.05.2019 22:53

      и вовсе не думает о собственных интересах.
      И правда смешно

      То же был сарказм


  1. AxeFizik
    11.05.2019 19:34
    +2

    Например, когда пользователь просматривает новостной сайт и заканчивает чтение страницы, то есть доходит до нижней её части, то ссылки на «похожие статьи» будут встроены в качестве порталов. Зачем веб-разработчику оформлять их таким образом? Преимущество использования порталов по сравнению с классическими ссылками заключается в том, что содержимое внутри порталов может быть предварительно загружено и предварительно отрендерено с загрузкой всего дерева DOM, то есть оно отобразится мгновенно.


    Что-то я слабо представляю, как должен работать этот пример. Если содержимое «похожей статьи» будет загружено со всем деревом DOM, то и порталы на ней тоже будут загружены. В результате это приведет к тому, что похожие статьи зациклятся друг на друга или по цепочке загрузят вообще все новости на сайте.


    1. Grief
      11.05.2019 21:27

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


  1. JTG
    11.05.2019 19:48
    +1

    > может переписывать URL в адресной строке браузера

    Ясно-понятно, опять AMP пропихивают.


  1. Wolf4D
    11.05.2019 20:28
    +8

    Открыл страничку почитать абзац — загрузил вдобавок пол-интернета. Удобная технология, экономящая мобильный трафик и уменьшающая время загрузки, ага.


  1. flygrounder
    11.05.2019 20:53
    +1

    Если люди начнут использовать это действительно как «порталы» — плавные переходы между сайтами, то будет классно.

    Но скорее всего мы увидим ещё больше мошеннических сайтов


  1. Fenzales
    11.05.2019 21:29
    +1

    Дайте угадаю, в целях безопасности в эти порталы не смогут стучаться плагины браузера и блокировщики рекламы там работать не будут?


    1. Tyusha
      11.05.2019 21:43

      Да нет. Как это не смогут плагины стучаться?! Если через JS туда можно обратиться (а как иначе-то), то всё ок.


      1. Fenzales
        12.05.2019 00:27
        +2

        А безопасность как же? Это что же получается, любая XSS-уязвимость превращается в источник слива данных с десятков ресурсов?

        Ну и вторая проблема — непонятно, как работать с показами. Засунул 10 порталов — получил 10 показов рекламы с одного открытия страницы?


        1. Tyusha
          12.05.2019 14:25

          Причём здесь XSS, речь о плагинах. Если вы поставили плагин, то вы уже добровольно уязвили любую загружаемую страницу перед этим плагином.


          1. dimkrayan
            13.05.2019 10:56

            а чем плагин будет отличаться от js с исходной страницы?


      1. Cryvage
        12.05.2019 08:50

        Насколько я понял, прямого доступа к DOM не будет. Будет возможность отправить сообщение порталу, а портал, в свою очередь сможет отправлять сообщения хосту. А так же будет возможность проверить, что сайт загружен как портал. Что делать с принятыми сообщениями, каждый решает сам. Т.е. фактически, каждый сайт сам будет определять какое API и возможности он предоставляет для работы с собой, как с порталом.

        // Send message to the portal element
        const portal = document.querySelector('portal');
        portal.postMessage({someKey: someValue}, ORIGIN);
        
        // Receive message via window.portalHost
        window.portalHost.addEventListener('message', evt => {
          const data = evt.data.someKey;
          // handle the event
        });
        


  1. crea7or
    11.05.2019 21:51

    Ну это же для баннеров и так понятно. Чего они опять развели это «добро для всех в интернете».


  1. merhalak
    11.05.2019 22:31
    +7

    portal лучше iframe тем, что там отказались от соображений безопасности?


  1. achekalin
    11.05.2019 23:01

    Сначала подумал: отличная же новость, шротные конторки переберутся на это новье, а мы как потребители просто вырезаем плагином или на прокси теги portal, и страницы загрузятся без довесков… Эх, мечты, мечты!


  1. Peter1010
    11.05.2019 23:25
    +3

    ух ты… У меня браузер будет загружать и рендерить предварительно статьи и иной шлак, который я даже не буду в 99% случаев смотреть… Представляю уже главную страницу какого ни будь рамблера, которая будет жрать 32гб памяти и грузить все 16 потоков…
    Порталы надо закопать и забыть. А фреймам убрать доступ через WindowsProxy.


  1. HamsterLike
    12.05.2019 07:10
    +1

    Интересно может ли быть Портал в Портале?


    1. lanseg
      12.05.2019 09:38

      А во втором портале портал на первый портал


  1. ARad
    12.05.2019 10:20

    <spacetimeportal to="target"></spacetimeportal>


  1. Groramar
    12.05.2019 11:20

    Давайте загрузим еще больше всего! Мало же уже того, что есть.


  1. nuclight
    12.05.2019 12:29

    > Например, когда пользователь просматривает новостной сайт и заканчивает чтение страницы, то есть доходит до нижней её части, то ссылки на «похожие статьи» будут встроены в качестве порталов. Зачем веб-разработчику оформлять их таким образом? Преимущество использования порталов по сравнению с классическими ссылками заключается в том, что содержимое внутри порталов может быть предварительно загружено и предварительно отрендерено с загрузкой всего дерева DOM

    То есть новостные сайты, которые уже сейчас часто тормозят и свопятся (попробуйте из агрегатора Яндекса на [виртуальной] 32-битной машине, например), станут вообще неподъемными, в т.ч. по трафику и батарее.

    Опять же, фреймы были такими сделаны не просто так, а для безопасности.

    Этот веб испортился, несите следующий.


    1. esc
      12.05.2019 13:02

      Вопрос, скорее в том, что нового в данном случае дают порталы. Такие «новости» можно реализовать и сейчас, обычный js давно это позволяет. Вопрос, конечно, в том, зачем их именно рендерить предварительно, но можно и так.

      Полагаю, что суть portal таки не таком использовании. Но реальных кейсов статья не раскрыла.
      Вероятно, такие порталы смогут быть поверх других сайтов, не пропадая при навигации. Такая функциональность реализована в некоторых приложения под Андроид (youtube, карты). Я думаю, кто слушал музыку на вКонтакте, положительно оценивали возможность ходить по страницам не прерывая плеер. Но там это могло работать только внутри самой соц. сети, а новый стандарт предполагает, что плеер какого-то ютуба может висеть где-то сбоку и не пропадать при переходе по любым сайтам.
      Однако, это догадка, из текста статьи не очень понятно, что конкретно предлагается. В ролике, увы, не увидел чего-то, что не реализовывается на iframe+js. В прочем, реальную ссылку на контент внутри iframe (на другом домене) таки не выйдет, но это как-то слабовато для целого нового тега.


      1. ffs
        14.05.2019 16:07

        Вопрос, конечно, в том, зачем их именно рендерить предварительно, но можно и так.

        Информация о клиенте (размеры и агент) есть, на сервере в отдельных потоках можно предварительно рендерить страницы которые отобразятся в конце текущей.


  1. mymzik
    13.05.2019 09:40

    Господа, помогите чайнику. Я человек уже в возрасте, слабо во всех этих современных вещах разбираюсь. Решил попробовать тег portal вместо iframe. Браузер новый google beta, поддержку portal включил. Вставил новый url так же как и в iframe, только использовал тег portal. Указанный url вставился, только там не работают ссылки, не регаируют на нажатие мыши. Что не так , что еще прописать сюда надо чтобы все заработало? Подскажите пожалуйста. Спасибо.


  1. esisl
    14.05.2019 12:06

    Не понял.
    Т.е. теперь можно брутфорсить врагов с клиентских машин, которые, случайно зашли на мой порносайтик?


  1. unel
    14.05.2019 12:49

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

    хм, а чем это принципиально отличается от rel="preload"?


  1. unel
    14.05.2019 12:54

    Более того,
    <portal>
    может переписывать URL в адресной строке браузера, то есть этот тег полезнее в качестве инструмента навигации. Опять же,
    <iframe>
    на такое не способен.


    а разве аттрибуты для ссылки target="_parent" / target="top" не делаю то, что нужно?


    1. unel
      14.05.2019 12:58

      А, вот в чём дело!

      Самая главная разница в том, что <portal> позволяет перемещаться внутри контента, который внедрён на страницу извне
      Странноватый сценарий… от него же вроде специально избавлялись в iframe, из соображений безопсаности