{"id":476245,"date":"2026-04-17T05:19:19","date_gmt":"2026-04-17T05:19:19","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=476245"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=476245","title":{"rendered":"\u041f\u0440\u0435\u043f\u0430\u0440\u0438\u0440\u0443\u0435\u043c Vivaldi \u0432\u043e \u0438\u043c\u044f \u043d\u0430\u0443\u043a\u0438 \u0438 \u043d\u0435\u0441\u043a\u0443\u0447\u043d\u044b\u0445 \u043e\u0431\u043e\u0435\u0432"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412 \u0445\u043e\u0434\u0435 \u043c\u043e\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0435\u0437\u0434\u0430 \u0441 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u0441\u043e\u0444\u0442\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u043e\u0448\u043b\u0430 \u0438 \u0434\u043e \u042f\u043d\u0434\u0435\u043a\u0441 \u0411\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u043a\u043e\u0438\u043c \u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0431\u0435\u0442\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u0438\u0432\u044b\u043a. \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u043c \u043d\u0430 \u0437\u0430\u043c\u0435\u043d\u0443 \u0441\u0442\u0430\u043b Vivaldi \u043a\u0430\u043a \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0439. \u041e\u0434\u043d\u0430\u043a\u043e, \u043a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0435\u0433\u043e \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0435\u043d\u0438\u044f \u043c\u043e\u0438\u0445 \u043f\u0440\u0438\u0432\u044b\u0447\u0435\u043a, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e: \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0441\u043a\u0440\u043e\u043b\u043b\u0438\u0442\u044c \u0432\u0432\u0435\u0440\u0445 \u043d\u0430\u0436\u0430\u0432 \u043d\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u0443\u044e \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u0438&#8230; \u0432\u0438\u0434\u0435\u043e-\u043e\u0431\u043e\u0435\u0432. \u0414\u0430, \u044f \u043e\u0447\u0435\u043d\u044c \u043a \u043d\u0438\u043c \u043f\u0440\u0438\u0432\u044b\u043a. \u0415\u0441\u043b\u0438 \u0441 \u043e\u0431\u043e\u044f\u043c\u0438 \u0435\u0449\u0435 \u043a\u0430\u043a-\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0430\u0439\u0442\u0438 \u0438\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0432 \u0441\u0432\u043e\u0439 \u044d\u043a\u0440\u0430\u043d \u043d\u043e\u0432\u043e\u0439 \u0432\u043a\u043b\u0430\u0434\u043a\u0438, \u0442\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u043c\u0435\u043d\u0442 \u0432\u043a\u043b\u0430\u0434\u043e\u043a \u044d\u0442\u043e \u0443\u0436\u0435 \u0432\u043d\u0435 \u0443\u0440\u043e\u0432\u043d\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439. \u0411\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u0437\u0443\u0447\u0438\u0442\u044c &#171;\u0430 \u043a\u0430\u043a \u043e\u043d\u043e \u0442\u0430\u043c \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u0432\u043d\u0443\u0442\u0440\u0438&#187;, \u0447\u0442\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u0417\u0430\u0431\u0435\u0433\u0430\u044f \u0432\u043f\u0435\u0440\u0435\u0434, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u044f \u0434\u043e\u0431\u0438\u043b\u0441\u044f, \u043f\u0443\u0441\u0442\u044c \u0438 \u0441 &#171;\u043d\u043e&#187;. \u0410 \u0435\u0441\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0438 \u0432\u0430\u043c &#8212; \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c.<\/p>\n<h2>\u042f web-\u0441\u0442\u0430\u0440\u043d\u0438\u0446\u0430, \u0442\u044b web-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u0432\u0441\u0451 web-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430<\/h2>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435 \u0438 \u0432\u043d\u0443\u0448\u0430\u044e\u0449\u0435\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u043c &#171;\u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435&#187; \u0432 Vivaldi \u0432\u0435\u0441\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u044d\u0442\u043e web-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u043c \u043d\u0430\u043c \u0445\u0440\u043e\u043c\u0438\u0443\u043c\u043d\u044b\u043c DevTools \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0434\u044f \u0432 <code>vivaldi:\/\/inspect\/#apps<\/code> \u0422\u0430\u043c \u043c\u044b \u0432\u0438\u0434\u0438\u043c <code>main.html<\/code> \u0438 <code>window.html<\/code>. \u041f\u0435\u0440\u0432\u043e\u0435 \u044d\u0442\u043e &#171;\u044f\u0434\u0440\u043e&#187; \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u0432\u0442\u043e\u0440\u043e\u0435 \u044d\u0442\u043e \u043d\u0430\u0448\u0438 \u043e\u043a\u043d\u0430 (\u043d\u0435 \u043f\u0443\u0442\u0430\u0442\u044c \u0441\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0430\u043c\u0438). <\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d93\/1b0\/789\/d931b0789595597ced002eca7f4e541b.png\" alt=\"\u0422\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u044d\u043a\u0440\u0430\u043d \u043d\u043e\u0432\u043e\u0439 \u0432\u043a\u043b\u0430\u0434\u043a\u0438 \u0432 window &quot;\u0438\u043d\u0441\u0442\u043f\u0435\u043a\u0442\u043e\u0440\u0435&quot;. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043a \u043b\u044e\u0431\u043e\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u043e\u043a\u043d\u0430.\" title=\"\u0422\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u044d\u043a\u0440\u0430\u043d \u043d\u043e\u0432\u043e\u0439 \u0432\u043a\u043b\u0430\u0434\u043a\u0438 \u0432 window &quot;\u0438\u043d\u0441\u0442\u043f\u0435\u043a\u0442\u043e\u0440\u0435&quot;. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043a \u043b\u044e\u0431\u043e\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u043e\u043a\u043d\u0430.\" width=\"2558\" height=\"1382\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/d93\/1b0\/789\/d931b0789595597ced002eca7f4e541b.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d93\/1b0\/789\/d931b0789595597ced002eca7f4e541b.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0422\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u044d\u043a\u0440\u0430\u043d \u043d\u043e\u0432\u043e\u0439 \u0432\u043a\u043b\u0430\u0434\u043a\u0438 \u0432 window &#171;\u0438\u043d\u0441\u0442\u043f\u0435\u043a\u0442\u043e\u0440\u0435&#187;. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043a \u043b\u044e\u0431\u043e\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u043e\u043a\u043d\u0430.<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/157\/a31\/8db\/157a318dbbd8187e5d0cce506db5ac18.png\" alt=\"\u0410 \u0432\u043e\u0442 \u0438 \u0432\u043a\u043b\u0430\u0434\u043a\u0438. \u041d\u0430 \u0444\u043e\u043d\u0435 \u0442\u043e \u0441\u0430\u043c\u043e\u0435 dev menu\" title=\"\u0410 \u0432\u043e\u0442 \u0438 \u0432\u043a\u043b\u0430\u0434\u043a\u0438. \u041d\u0430 \u0444\u043e\u043d\u0435 \u0442\u043e \u0441\u0430\u043c\u043e\u0435 dev menu\" width=\"2558\" height=\"1381\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/157\/a31\/8db\/157a318dbbd8187e5d0cce506db5ac18.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/157\/a31\/8db\/157a318dbbd8187e5d0cce506db5ac18.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0410 \u0432\u043e\u0442 \u0438 \u0432\u043a\u043b\u0430\u0434\u043a\u0438. \u041d\u0430 \u0444\u043e\u043d\u0435 \u0442\u043e \u0441\u0430\u043c\u043e\u0435 dev menu<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 \u0432\u043a\u043b\u0430\u0434\u043e\u043a, \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u0434\u043b\u044f \u043d\u0430\u0441 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 <code>window.html<\/code>. \u041f\u0443\u0442\u0435\u043c \u043d\u0435\u0445\u0438\u0442\u0440\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0432 AppData\\Local\\Vivaldi\\Application\\7.9.3970.50\\resources\\vivaldi\\window.html. \u0412\u0438\u0434\u0438\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u044e \u0432 \u043f\u0443\u0442\u0438? \u042d\u0442\u043e \u0442\u043e \u0441\u0430\u043c\u043e\u0435 &#171;\u043d\u043e&#187;. \u041f\u0430\u0442\u0447\u0438\u0442\u044c window.html \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f. \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c.<\/p>\n<pre><code class=\"xml\">&lt;!-- Vivaldi window document --&gt;&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt;  &lt;meta charset=\"UTF-8\" \/&gt;  &lt;title&gt;Vivaldi&lt;\/title&gt;  &lt;link rel=\"stylesheet\" href=\"style\/common.css\" \/&gt;  &lt;link rel=\"stylesheet\" href=\"chrome:\/\/vivaldi-data\/css-mods\/css\" \/&gt;&lt;\/head&gt;&lt;body&gt;&lt;\/body&gt;&lt;\/html&gt;<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412\u0435\u0441\u044c\u043c\u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u043e. css-mods\/css \u0443 \u0432\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u0438 \u043d\u0435 \u0431\u044b\u0442\u044c, \u043e \u043d\u0438\u0445 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043f\u043e\u0437\u0436\u0435, \u0447\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u0437\u043d\u0430\u0442\u044c &#8212; \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439, \u043f\u0443\u0441\u0442\u044c \u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b. \u042d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b vivaldi \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0448\u0430\u0431\u043b\u043e\u043d \u0434\u043b\u044f \u043b\u044e\u0431\u044b\u0445 \u043d\u043e\u0432\u044b\u0445 \u043e\u043a\u043e\u043d \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0432 \u043d\u0443\u0436\u043d\u044b\u0439 \u0435\u043c\u0443 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0432 body. \u041c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c body \u043c\u044b \u043a\u0441\u0442\u0430\u0442\u0438 \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u0435\u043c, \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043b\u044e\u0431\u0435\u0437\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043d\u0430\u0448\u0435 \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u0442\u0432\u043e \u0438 \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u044e \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0443 \u0432 \u043a\u043e\u043d\u0435\u0446 body. \u041d\u043e \u0434\u043b\u044f \u043d\u0430\u0448\u0438\u0445 \u0446\u0435\u043b\u0435\u0439 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e head. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0443\u0434\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432 \u043f\u0430\u043f\u043a\u0443 <code>usermod_inject<\/code> \u0438 \u0441\u0430\u043c \u0444\u0430\u0439\u043b <code>scroll-to-top-tab.js<\/code>. <\/p>\n<pre><code class=\"yaml\">  &lt;script defer src='.\/usermod_inject\/scroll-to-top-tab.js'&gt;&lt;\/script&gt;<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u043f\u044b\u0442\u043d\u044b\u043c \u043f\u0443\u0442\u0435\u043c \u0431\u044b\u043b\u043e \u0432\u044b\u044f\u0441\u043d\u0435\u043d\u043e \u0447\u0442\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0443\u043d\u043a\u0442\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f defer, \u0438\u043d\u0430\u0447\u0435 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u043d\u0430 \u043e\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u043d\u0435\u0442 \u043d\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0411\u044b\u043b\u043e \u043e\u0447\u0435\u043d\u044c \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u043d\u0430 \u0442\u0440\u0435\u0442\u0438\u0439 \u0434\u0435\u043d\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u0445\u043e\u0440\u043e\u0448\u043e \u0447\u0442\u043e \u043d\u0435 \u043f\u043e\u0441\u043f\u0435\u0448\u0438\u043b \u0441 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u0437\u0430\u043c\u0435\u0442\u043a\u0438. \u0412 \u0446\u0435\u043b\u043e\u043c \u0441\u043a\u0430\u0436\u0443 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u0443\u044e \u0432\u0435\u0449\u044c: <\/p>\n<blockquote>\n<p>\u0412\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u044f\u043d\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438\u043b\u0438 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043a\u0435\u0439\u0441\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435\u0432\u0435\u0440\u043d\u043e. \u0418 \u0443\u0436 \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0431\u0435\u0437 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0447\u0443\u0436\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430. <\/p>\n<\/blockquote>\n<p>\u0410, \u0447\u0442\u043e \u0434\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0442\u043e \u0432\u043e\u0442. \u041f\u0440\u043e\u0448\u0443 \u0441\u0438\u043b\u044c\u043d\u043e \u0442\u0430\u043f\u043a\u0430\u043c\u0438 \u043d\u0435 \u043a\u0438\u0434\u0430\u0442\u044c\u0441\u044f, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u0441\u0442\u044b\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442 \u043d\u0435\u0437\u043d\u0430\u043d\u0438\u044f, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043e \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e.  \u041a\u0441\u0442\u0430\u0442\u0438, \u043d\u0435 \u043f\u044b\u0442\u0430\u0439\u0442\u0435\u0441\u044c \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c js \u043a\u043e\u0434 \u0432 body, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0437\u0430\u0449\u0438\u0442\u044b \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0435\u0433\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442. <\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"javascript\">(function () {  function getActiveWebview() {    return [...document.querySelectorAll(\"webview\")]      .find(v =&gt; {        const style = window.getComputedStyle(v);        return style.display !== \"none\" &amp;&amp; style.visibility !== \"hidden\";      });  }  function scrollToTop() {    const webview = getActiveWebview();    if (!webview) return;    webview.executeScript({      code: `window.scrollTo({ top: 0, behavior: 'smooth' });`    });  }  function setup() {    const tabStrip = document.querySelector(\"#tabs-container\");    if (!tabStrip) return;    let startX = 0;    let startY = 0;    tabStrip.addEventListener(\"mousedown\", (e) =&gt; {      \/\/ \u0442\u043e\u043b\u044c\u043a\u043e \u041b\u041a\u041c      if (e.button !== 0) return;      const tab = e.target.closest(\".tab\");      if (!tab) return;      \/\/ \u0438\u0433\u043d\u043e\u0440 \u043a\u0440\u0435\u0441\u0442\u0438\u043a\u0430      if (e.target.closest(\".close\")) return;      startX = e.clientX;      startY = e.clientY;      const wasActive = tab.classList.contains(\"active\");      function onMouseUp(ev) {        \/\/ \u0442\u043e\u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443        if (ev.button !== 0) return;        const dx = Math.abs(ev.clientX - startX);        const dy = Math.abs(ev.clientY - startY);        \/\/ drag \u2192 \u0438\u0433\u043d\u043e\u0440        if (dx &gt; 5 || dy &gt; 5) return;        \/\/ \u0432\u043a\u043b\u0430\u0434\u043a\u0430 \u0437\u0430\u043a\u0440\u044b\u0442\u0430 \u2192 \u0438\u0433\u043d\u043e\u0440        if (!document.body.contains(tab)) return;        if (wasActive) {          setTimeout(scrollToTop, 50);        }      }      document.addEventListener(\"mouseup\", onMouseUp, { once: true });    });  }  setTimeout(setup, 1000);})();<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442&#8230;<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/69db87f14b66d902aa88fa97\" data-style=\"\" id=\"69db87f14b66d902aa88fa97\" width=\"\" data-habr-games=\"\"><\/div>\n<p>&#8230;\u0434\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0414\u0430\u0431\u044b \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c &#171;\u043f\u0430\u0442\u0447\u0438\u043d\u0433&#187; \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043c \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430\u043c bat \u0444\u0430\u0439\u043b. \u0410 \u0437\u0430\u0442\u0435\u043c \u0435\u0449\u0435 \u0440\u0430\u0437 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0435 \u043f\u044f\u0442\u044c \u0441\u043b\u043e\u043c\u0430\u0435\u0442 \u0432\u0430\u043c \u0432\u0435\u0441\u044c \u0431\u0440\u0430\u0443\u0437\u0435\u0440. \u0414\u0430, \u0441\u043b\u0430\u0431\u043e\u0443\u043c\u0438\u0435 \u0430 \u043e\u0442\u0432\u0430\u0433\u0430, \u0432\u043e\u0442 \u0442\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c. \u041d\u0438\u0436\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043e\u0441\u043e\u0431\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e, \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0449\u0435\u043c \u0432\u0435\u0440\u0441\u0438\u044e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u043f\u043e \u043d\u0443\u0436\u043d\u043e\u043c\u0443 \u043f\u0443\u0442\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0442\u0440\u043e\u0447\u043a\u0443 \u0432 html, \u043f\u043e\u043f\u0443\u0442\u043d\u043e \u043a\u043e\u043f\u0438\u0440\u0443\u044f \u043d\u0443\u0436\u043d\u044b\u0439 js.<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">@echo offsetlocal enabledelayedexpansionREM === Path to Vivaldi Application ===set \"VIVALDI_PATH=%LOCALAPPDATA%\\Vivaldi\\Application\"REM === Custom variables ===set \"INJECT_DIR=usermod_inject\"set \"SCRIPT_NAME=scroll-to-top-tab.js\"REM === Find version ===set \"LATEST=\"for \/f \"delims=\" %%d in ('dir \"%VIVALDI_PATH%\" \/b \/ad-h \/o-n') do (    if not defined LATEST (        set \"LATEST=%%d\"    ))if not defined LATEST (    echo Vivaldi version not found    pause    exit \/b)echo Found version: %LATEST%set \"TARGET_DIR=%VIVALDI_PATH%\\%LATEST%\\resources\\vivaldi\"set \"HTML_FILE=%TARGET_DIR%\\window.html\"set \"INJECT_PATH=%TARGET_DIR%\\%INJECT_DIR%\"set \"JS_FILE=%INJECT_PATH%\\%SCRIPT_NAME%\"REM === Check window.html ===if not exist \"%HTML_FILE%\" (    echo window.html not found    pause    exit \/b)REM === Create inject directory if not exists ===if not exist \"%INJECT_PATH%\" (    mkdir \"%INJECT_PATH%\")REM === Copy JS ===if exist \"%SCRIPT_NAME%\" (    copy \/Y \"%SCRIPT_NAME%\" \"%JS_FILE%\" &gt;nul    echo JS copied to %INJECT_PATH%) else (    echo %SCRIPT_NAME% not found \u0440\u044f\u0434\u043e\u043c \u0441 bat)REM === Check is inserted js ===powershell -NoProfile -Command \"if ((Get-Content '%HTML_FILE%' -Raw) -match '%SCRIPT_NAME%') { exit 1 }\"if %errorlevel%==1 (    echo Script already inserted    exit \/b)REM === Insert js ===powershell -NoProfile -Command \"$c=Get-Content '%HTML_FILE%' -Raw; $t='  &lt;script defer src=''.\/%INJECT_DIR%\/%SCRIPT_NAME%''&gt;&lt;\/script&gt;'; $c -replace '&lt;\/head&gt;', ($t + [Environment]::NewLine + '&lt;\/head&gt;') | Set-Content '%HTML_FILE%'\":endecho Donepause<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u0443 \u0432\u043e\u0442 \u0442\u043e\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437<\/p>\n<\/div>\n<\/details>\n<h2>\u0425\u043e\u0447\u0443 \u043d\u0435\u0441\u043a\u0443\u0447\u043d\u044b\u0435 \u043e\u0431\u043e\u0438<\/h2>\n<p>\u042d\u0442\u0443 \u0447\u0430\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0432 \u0441\u0432\u043e\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0430\u043d\u0435\u043b\u0438 \u043d\u043e\u0432\u043e\u0439 \u0432\u043a\u043b\u0430\u0434\u043a\u0438, \u043d\u043e \u0440\u0430\u0437 \u0443\u0436 \u043c\u044b \u0443\u0436\u0435 \u0432\u043e\u0437\u0438\u043c\u0441\u044f \u0441 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u0435\u043c JS \u0442\u043e \u0442\u0430\u043a \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0449\u0435. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u044f \u043d\u0430\u0439\u0434\u0443 &#171;\u0442\u0443 \u0441\u0430\u043c\u0443\u044e&#187; \u043f\u0430\u043d\u0435\u043b\u044c\u043a\u0443 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u0435\u043d\u044f \u0443\u0441\u0442\u0440\u043e\u0438\u0442 \u0438\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u044e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u0430\u043c. (\u041d\u0443 \u0434\u0430, \u043d\u0443 \u0434\u0430). Anyway, \u043c\u0435\u0442\u043e\u0434 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f, \u043d\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0432\u043e\u0437\u0438\u0442\u0441\u044f \u0441 \u043f\u043e\u0438\u0441\u043a\u043e\u043c \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430. \u0414\u0430\u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043a\u0430\u043a \u0434\u043e\u043b\u0433\u043e \u043e\u043d\u043e \u043f\u0440\u043e\u0436\u0438\u0432\u0435\u0442, \u0434\u043e \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 html. \u0412\u0441\u0435 \u043a\u043e\u0434\u044b \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u043e\u043c.<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"javascript\">(function () {  const VIDEO_PATH = \".\/usermod_inject\/background-video.mp4\";  let video = null;  let isSpeedDialActive = false;  let isWindowFocused = true;  function getTopOffset(container) {    const rect = container.getBoundingClientRect();    return rect.top;  }  function ensureVideo() {    if (video) return video;    video = document.createElement(\"video\");    video.id = \"vivaldi-bg-video\";    video.src = VIDEO_PATH;    video.autoplay = true;    video.loop = true;    video.muted = true;    video.playsInline = true;    video.style.opacity = \"0\";    video.onloadeddata = () =&gt; {      video.style.transition = \"opacity 0.3s\";      video.style.opacity = \"1\";    };    return video;  }  function updatePlayback() {    const v = ensureVideo();    if (isSpeedDialActive &amp;&amp; isWindowFocused) {      if (v.paused) v.play().catch(() =&gt; {});    } else {      if (!v.paused) v.pause();    }  }  function update() {    const container =      document.querySelector(\".startpage\") ||      document.querySelector(\".SpeedDialView\");    const v = ensureVideo();    if (container) {      isSpeedDialActive = true;      const offset = getTopOffset(container);      Object.assign(v.style, {        position: \"absolute\",        top: `-${offset}px`,        left: \"0\",        width: \"100%\",        height: `calc(100% + ${offset}px)`,        objectFit: \"cover\",        zIndex: \"-1\",        pointerEvents: \"none\",        display: \"block\"      });      if (v.parentElement !== container) {        container.style.position = \"relative\";        container.prepend(v);      }    } else {      isSpeedDialActive = false;      if (v.parentElement) {        v.style.display = \"none\";      }    }    updatePlayback();  }  \/\/ === window focus ===  window.addEventListener(\"focus\", () =&gt; {    isWindowFocused = true;    updatePlayback();  });  window.addEventListener(\"blur\", () =&gt; {    isWindowFocused = false;    updatePlayback();  });  \/\/ === visibility API  ===  document.addEventListener(\"visibilitychange\", () =&gt; {    isWindowFocused = !document.hidden;    updatePlayback();  });  const observer = new MutationObserver(update);  setTimeout(() =&gt; {    update();    observer.observe(document.body, {      childList: true,      subtree: true    });  }, 500);})();<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c, \u0438\u0449\u0435\u043c \u043d\u0443\u0436\u043d\u044b\u0439 div \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0432\u0438\u0434\u0435\u043e \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043c \u043a\u043e\u0433\u0434\u0430 \u043e\u043a\u043d\u043e \u0432 \u0444\u043e\u043a\u0443\u0441\u0435 \u0438 \u043d\u043e\u0432\u0430\u044f \u0432\u043a\u043b\u0430\u0434\u043a\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u0430, \u0434\u0430\u0431\u044b \u043d\u0435 \u043a\u0443\u0448\u0430\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0438 \u043d\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u0432\u0438\u0434\u0435\u043e \u0432\u0441\u0435\u0433\u0434\u0430. \u0410 \u043d\u0438\u0436\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 bat \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f.<\/p>\n<pre><code class=\"bash\">@echo offsetlocal enabledelayedexpansionREM === Path to Vivaldi Application ===set \"VIVALDI_PATH=%LOCALAPPDATA%\\Vivaldi\\Application\"REM === Custom variables ===set \"INJECT_DIR=usermod_inject\"set \"SCRIPT_NAME=background-video.js\"set \"VIDEO_NAME=background-video.mp4\"REM === Find version ===set \"LATEST=\"for \/f \"delims=\" %%d in ('dir \"%VIVALDI_PATH%\" \/b \/ad-h \/o-n') do (    if not defined LATEST (        set \"LATEST=%%d\"    ))if not defined LATEST (    echo Vivaldi version not found    pause    exit \/b)echo Found version: %LATEST%set \"TARGET_DIR=%VIVALDI_PATH%\\%LATEST%\\resources\\vivaldi\"set \"HTML_FILE=%TARGET_DIR%\\window.html\"set \"INJECT_PATH=%TARGET_DIR%\\%INJECT_DIR%\"set \"JS_FILE=%INJECT_PATH%\\%SCRIPT_NAME%\"set \"VIDEO_FILE=%INJECT_PATH%\\%VIDEO_NAME%\"REM === Check window.html ===if not exist \"%HTML_FILE%\" (    echo window.html not found    pause    exit \/b)REM === Create inject directory if not exists ===if not exist \"%INJECT_PATH%\" (    mkdir \"%INJECT_PATH%\")REM === Copy JS ===if exist \"%SCRIPT_NAME%\" (    copy \/Y \"%SCRIPT_NAME%\" \"%JS_FILE%\" &gt;nul    echo JS copied) else (    echo %SCRIPT_NAME% not found \u0440\u044f\u0434\u043e\u043c \u0441 bat)REM === Copy VIDEO ===if exist \"%VIDEO_NAME%\" (    copy \/Y \"%VIDEO_NAME%\" \"%VIDEO_FILE%\" &gt;nul    echo Video copied) else (    echo %VIDEO_NAME% not found \u0440\u044f\u0434\u043e\u043c \u0441 bat)REM === Check is inserted js ===powershell -NoProfile -Command \"if ((Get-Content '%HTML_FILE%' -Raw) -match '%SCRIPT_NAME%') { exit 1 }\"if %errorlevel%==1 (    echo Script already inserted    exit \/b)REM === Insert js ===powershell -NoProfile -Command \"$c=Get-Content '%HTML_FILE%' -Raw; $t='  &lt;script defer src=''.\/%INJECT_DIR%\/%SCRIPT_NAME%''&gt;&lt;\/script&gt;'; $c -replace '&lt;\/head&gt;', ($t + [Environment]::NewLine + '&lt;\/head&gt;') | Set-Content '%HTML_FILE%'\":endecho Donepause<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c.<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/69db8c7967f22e02b4987f86\" data-style=\"\" id=\"69db8c7967f22e02b4987f86\" width=\"\" data-habr-games=\"\"><\/div>\n<h2>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0431\u043e\u043d\u0443\u0441<\/h2>\n<p>\u041f\u0430\u0440\u0430\u0434\u043e\u043a\u0441\u0430\u043b\u044c\u043d\u043e, \u043d\u043e \u0441\u0430\u043c\u044b\u0439 \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0438\u0440\u0443\u044e\u043c\u044b\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c bar \u0437\u0430\u043a\u043b\u0430\u0434\u043e\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u044d\u043a\u0441\u043f\u0440\u0435\u0441\u0441 \u043f\u0430\u043d\u0435\u043b\u0438, \u0447\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435-\u0442\u043e \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0445\u0440\u043e\u043c\u0430. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 Vivaldi \u043f\u0438\u0441\u0430\u043b\u0438 UI \u0441 \u043d\u0443\u043b\u044f \u0438 \u0443 \u043d\u0438\u0445 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0434\u043e\u0448\u043b\u0438 \u0440\u0443\u043a\u0438. \u042d\u0442\u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0438\u0441\u0442\u043e \u043d\u0430 css \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430. \u0414\u0430-\u0434\u0430, \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0435\u0433\u043e css \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439, \u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b. \u0417\u0430\u0445\u043e\u0434\u0438\u043c \u043d\u0430 <code>chrome:\/\/flags\/#vivaldi-css-mods<\/code> \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ff3\/20f\/21c\/ff320f21c217b6ccc64e208a1776d5eb.png\" width=\"913\" height=\"140\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/ff3\/20f\/21c\/ff320f21c217b6ccc64e208a1776d5eb.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ff3\/20f\/21c\/ff320f21c217b6ccc64e208a1776d5eb.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0410 \u0437\u0430\u0442\u0435\u043c \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 <code>vivaldi:\/\/settings\/appearance<\/code> \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0442\u0430\u043c \u043f\u0430\u043f\u043a\u0443 \u043a \u043c\u043e\u0434\u0430\u043c.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/30d\/b76\/dcf\/30db76dcf7ae362f064efd810160dd94.png\" width=\"807\" height=\"331\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/30d\/b76\/dcf\/30db76dcf7ae362f064efd810160dd94.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/30d\/b76\/dcf\/30db76dcf7ae362f064efd810160dd94.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412 \u0441\u0430\u043c\u0443 \u043f\u0430\u043f\u043a\u0443 \u043a\u043b\u0430\u0434\u0435\u043c \u0442\u0430\u043a\u043e\u0439 \u043d\u0435\u0445\u0438\u0442\u0440\u044b\u0439 css. \u042f \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b \u0441\u0435\u0431\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0448\u0430\u043c\u0430\u043d\u0438\u0442\u044c \u0441\u043e \u0441\u0442\u0438\u043b\u0435\u043c, \u0441\u0434\u0435\u043b\u0430\u0432 \u0431\u0430\u0440 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c. \u0415\u0441\u043b\u0438\u0432\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0447\u0430\u0441\u0442\u044c \u0441 <code>display<\/code> \u042d\u0442\u043e\u0442 css \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043d\u0435\u00a0\u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043e\u0431\u00a0\u044d\u0442\u043e\u043c \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442\u0435 \u043a\u043e\u043f\u0430\u0442\u044c\u0441\u044f \u0432\u00a0\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0438 \u0434\u0443\u043c\u0430\u0442\u044c \u00ab\u0410 \u0447\u0442\u043e\u00a0\u043d\u0435\u00a0\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442?\u00bb. \u0418 \u0434\u0430\u00a0\u0442\u0430\u043a\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0442\u0438\u043b\u044c \u0432\u043e\u043e\u0431\u0449\u0435 \u043b\u044e\u0431\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043e\u043a\u043d\u0430.<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"css\">\/* Show Bookmark bar only in New Tab *\/#browser #main .bookmark-bar {    display: none;}#browser #main:has(.SpeedDialView-Settings-Button) .bookmark-bar {     display: block;    \/* BG *\/    background: rgba(20, 20, 20, 0.35) !important;    backdrop-filter: blur(12px);    -webkit-backdrop-filter: blur(12px);}\/* \u041a\u043d\u043e\u043f\u043a\u0438 \u0437\u0430\u043a\u043b\u0430\u0434\u043e\u043a (\u043f\u043b\u0438\u0442\u043a\u0438) *\/\/* \u041a\u043d\u043e\u043f\u043a\u0438 \u0437\u0430\u043a\u043b\u0430\u0434\u043e\u043a *\/#browser #main:has(.SpeedDialView-Settings-Button) .bookmark-bar button,#browser #main:has(.SpeedDialView-Settings-Button) .bookmark-bar .button,#browser #main:has(.SpeedDialView-Settings-Button) .bookmark-bar .bookmark {    background: rgba(40, 40, 40, 0.0) !important;    border-radius: 10px !important;    transition: all 0.2s ease;}#browser #main:has(.SpeedDialView-Settings-Button) .bookmark-bar button:hover,#browser #main:has(.SpeedDialView-Settings-Button) .bookmark-bar .button:hover,#browser #main:has(.SpeedDialView-Settings-Button) .bookmark-bar .bookmark:hover {    background: rgba(40, 40, 40, 0.5) !important;}#browser #main:has(.SpeedDialView-Settings-Button) .bookmark-bar button:active,#browser #main:has(.SpeedDialView-Settings-Button) .bookmark-bar .button:active,#browser #main:has(.SpeedDialView-Settings-Button) .bookmark-bar .bookmark:active {    background: rgba(40, 40, 40, 1.0) !important;}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<h2>\u0412\u044b\u0432\u043e\u0434\u044b \u0438 \u043f\u0430\u0440\u0430 \u0441\u043b\u043e\u0432 Yandex \u0438 Vivaldi<\/h2>\n<p>\u041a\u0430\u043a\u0438\u0435 \u0432\u044b\u0432\u043e\u0434\u044b \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043b\u044f \u0441\u0435\u0431\u044f? \u041c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c Vivaldi \u043c\u043e\u0436\u043d\u043e, css \u043c\u043e\u0434\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 &#171;\u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438&#187;, \u0430 js \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0442\u0440\u0443\u0434\u0430 \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445 \u043b\u0438\u0431\u043e \u0430\u0434\u043c\u0438\u043d\u0441\u043a\u0438\u0445 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0449\u0435 \u0440\u0430\u0437 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0441\u043a\u0430\u0437\u0430\u0442\u044c: \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u0435\u0435 \u0441\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u043c\u0438, \u0442\u0430\u043a\u043e\u0439 js \u043c\u043e\u0434\u0434\u0438\u043d\u0433 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e \u0431\u043b\u0430\u0433\u043e \u0438 \u043e\u0434\u0438\u043d \u0437\u0430\u043f\u0443\u0441\u043a bat \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0432\u043e\u0440\u043e\u0442\u0438\u0442\u044c \u0434\u0435\u043b. \u0412\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u0435\u043d \u043f\u0440\u0438 \u0441\u0435\u0440\u0444\u0438\u043d\u0433\u0435 \u0438 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0436\u0435 \u0443\u044f\u0437\u0432\u0438\u043c \u043f\u0440\u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u0437\u0432\u043d\u0435.<\/p>\n<p>\u0427\u0442\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0441\u043a\u0430\u0437\u0430\u0442\u044c Yandex \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u044f \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u0430\u0448\u0438\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c. \u042f \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u0447\u0442\u043e \u0432\u043e \u043c\u043d\u043e\u0433\u043e\u043c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0441 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u043e\u043c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u0442 \u0432\u0430\u0441 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442, \u043d\u043e \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0432\u0430\u0448\u0430\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0431\u043e\u0440\u0430 \u0442\u0435\u043b\u0435\u043c\u0435\u0442\u0440\u0438\u0438\u00a0\u0431\u044b\u043b\u0430 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0430\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u043e\u0439 \u0438 \u0434\u043e\u00a0\u044d\u0442\u043e\u0433\u043e. \u041e\u0434\u043d\u0430\u0436\u0434\u044b \u043c\u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0443 \u043f\u043e\u00a0\u0442\u043e\u043c\u0443 \u043a\u0442\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 png \u043f\u043e\u00a0\u0441\u0441\u044b\u043b\u043a\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u043e\u0445\u0432\u0430\u0442 \u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0438. \u0421\u0430\u043c\u0430 \u0441\u0441\u044b\u043b\u043a\u0430 \u0438\u043c\u0435\u043b\u0430 \u0432\u0435\u0441\u044c\u043c\u0430 \u0437\u0430\u043c\u044b\u0441\u043b\u043e\u0432\u0430\u0442\u044b\u0439 url, \u0443\u0433\u0430\u0434\u0430\u0442\u044c \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u0412\u0430\u0448\u0438 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u044b\u0435 \u0431\u043e\u0442\u044b (\u043d\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440) \u043f\u043e\u0448\u043b\u0438 \u0432\u043e\u00a0\u0432\u0441\u0435 \u0442\u044f\u0436\u043a\u0438\u0435 \u0435\u0449\u0435 \u0434\u043e\u00a0\u0442\u043e\u0433\u043e \u043a\u0430\u043a\u00a0\u044f \u043d\u0430\u0436\u0430\u043b enter \u0434\u043b\u044f\u00a0\u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430. \u041f\u043e\u0439\u0434\u044f \u0438 \u043f\u043e\u00a0\u0442\u043e\u0447\u043d\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443, \u0438 \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e \u043f\u043e\u00a0\u0440\u0430\u0437\u043d\u044b\u043c \u0443\u0440\u043e\u0432\u043d\u044f\u043c \u0441\u0430\u043c\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438 \u0438 \u0434\u043e\u043c\u0435\u043d\u0430, \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0441\u0442\u0443\u0447\u0430\u0432\u0448\u0438\u0441\u044c \u0432\u00a0\u043f\u0430\u0440\u0443 \u0430\u0434\u043c\u0438\u043d \u043f\u0430\u043d\u0435\u043b\u0435\u0439. \u042d\u0442\u043e \u0437\u0430\u0445\u043e\u0434\u0438\u0442 \u0434\u0430\u043b\u0435\u043a\u043e \u0437\u0430 \u00ab\u043f\u0440\u043e\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0440\u0435\u0432\u044c\u044e\u00bb \u0441\u00a0\u043c\u0430\u0448\u0438\u043d\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p>\u0427\u0442\u043e\u00a0\u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0441\u043a\u0430\u0437\u0430\u0442\u044c Vivaldi. \u0412\u044b \u043c\u043e\u043b\u043e\u0434\u044b \u0438 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0444\u043e\u0440\u043a Chrome. \u041a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u00a0\u0432\u044b\u0441\u043e\u0442\u0435. \u042f \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u0447\u0442\u043e\u00a0\u0443\u00a0\u0432\u0430\u0441 \u043a\u0443\u0447\u0430 \u0434\u0435\u043b \u0438 \u0432\u0438\u0434\u0435\u043e\u2011\u043e\u0431\u043e\u0438 \u044f\u0432\u043d\u043e \u043d\u0435\u00a0\u0432\u00a0\u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0435, \u043e\u0434\u043d\u0430\u043a\u043e \u043d\u0435\u00a0\u0438\u043c\u0435\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b chrome \u0432\u00a0\u0432\u0438\u0434\u0435 \u0441\u043a\u0440\u044b\u0442\u0438\u044f \u0431\u0430\u0440\u0430 \u0432\u043a\u043b\u0430\u0434\u043e\u043a \u0434\u043b\u044f\u00a0\u0432\u0441\u0435\u0433\u043e \u043a\u0440\u043e\u043c\u0435 \u00ab\u044d\u043a\u0441\u043f\u0440\u0435\u0441\u0441 \u043f\u0430\u043d\u0435\u043b\u0438\u00bb \u044d\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u00a0\u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0435\u0431\u044f \u043a\u0430\u043a\u00a0\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0441\u00a0\u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439. \u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u043f\u043e\u00a0\u044d\u0442\u043e\u043c\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0443 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u043e\u0441\u044c\u0431\u044b \u043e\u0442\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0430 \u00ab\u0440\u0435\u0434\u0434\u0438\u0442\u0430\u0445\u00bb \u0442\u044f\u043d\u0443\u0442\u0441\u044f \u0433\u043e\u0434\u0430\u043c\u0438. \u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432\u0432\u0435\u0440\u0445 \u043f\u043e\u00a0\u043d\u0430\u0436\u0430\u0442\u0438\u044e \u043d\u0430\u00a0\u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u0442\u043e\u0436\u0435 \u043d\u0435\u00a0\u044d\u043a\u0441\u043a\u043b\u044e\u0437\u0438\u0432 \u0438 \u0435\u0441\u0442\u044c \u0443\u00a0\u0442\u043e\u0439\u00a0\u0436\u0435 Opera. \u0412\u00a0\u0447\u0443\u0436\u043e\u0439 \u043c\u043e\u043d\u0430\u0441\u0442\u044b\u0440\u044c \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0443\u0441\u0442\u0430\u0432\u043e\u043c \u043d\u0435\u00a0\u043b\u0435\u0437\u0443\u0442, \u043d\u043e\u00a0\u043f\u043e\u0441\u043b\u0435\u0432\u043a\u0443\u0441\u0438\u0435 \u0442\u0430\u043a\u043e\u0435, \u0447\u0442\u043e\u00a0\u0438\u0437\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u0438 \u0447\u0443\u0442\u043e\u0447\u043a\u0443 \u043b\u0443\u0447\u0448\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430\u00a0\u0432\u0441\u0435 \u044d\u0442\u0438 \u043d\u0435\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0441\u043c\u043e\u0433 \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u043c\u043e\u0438 \u043f\u0440\u0438\u0432\u0435\u0440\u0435\u0434\u043b\u0438\u0432\u044b\u0445 \u0445\u043e\u0442\u0435\u043b\u043e\u043a.<\/p>\n<p>\u041d\u0430\u0434\u0435\u044e\u0441\u044c \u0442\u0430\u043a\u043e\u0435 \u00ab\u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u00bb\u00a0\u0431\u044b\u043b\u043e \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e. \u0421\u0442\u0430\u0442\u044c\u044e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0448\u0438\u043b \u0431\u043e\u043b\u044c\u0448\u0435 \u0432 \u0446\u0435\u043b\u044f\u0445 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043d\u0435\u0436\u0435\u043b\u0438 \u043a\u0430\u043a \u0433\u043e\u0442\u043e\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u0423\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0432\u0435\u0449\u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e \u0434\u0440\u0443\u0433\u043e\u043c\u0443. <a href=\"https:\/\/github.com\/immago\/vivaldi-restyler\" rel=\"noopener noreferrer nofollow\">\u0412\u0441\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0442\u0443\u0442<\/a>.<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1024422\/\">https:\/\/habr.com\/ru\/articles\/1024422\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0412 \u0445\u043e\u0434\u0435 \u043c\u043e\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0435\u0437\u0434\u0430 \u0441 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u0441\u043e\u0444\u0442\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u043e\u0448\u043b\u0430 \u0438 \u0434\u043e \u042f\u043d\u0434\u0435\u043a\u0441 \u0411\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u043a\u043e\u0438\u043c \u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0431\u0435\u0442\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u0438\u0432\u044b\u043a. \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u043c \u043d\u0430 \u0437\u0430\u043c\u0435\u043d\u0443 \u0441\u0442\u0430\u043b Vivaldi \u043a\u0430\u043a \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0439. \u041e\u0434\u043d\u0430\u043a\u043e, \u043a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0435\u0433\u043e \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0435\u043d\u0438\u044f \u043c\u043e\u0438\u0445 \u043f\u0440\u0438\u0432\u044b\u0447\u0435\u043a, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e: \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0441\u043a\u0440\u043e\u043b\u043b\u0438\u0442\u044c \u0432\u0432\u0435\u0440\u0445 \u043d\u0430\u0436\u0430\u0432 \u043d\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u0443\u044e \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u0438&#8230; \u0432\u0438\u0434\u0435\u043e-\u043e\u0431\u043e\u0435\u0432. \u0414\u0430, \u044f \u043e\u0447\u0435\u043d\u044c \u043a \u043d\u0438\u043c \u043f\u0440\u0438\u0432\u044b\u043a. \u0415\u0441\u043b\u0438 \u0441 \u043e\u0431\u043e\u044f\u043c\u0438 \u0435\u0449\u0435 \u043a\u0430\u043a-\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0430\u0439\u0442\u0438 \u0438\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0432 \u0441\u0432\u043e\u0439 \u044d\u043a\u0440\u0430\u043d \u043d\u043e\u0432\u043e\u0439 \u0432\u043a\u043b\u0430\u0434\u043a\u0438, \u0442\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u043c\u0435\u043d\u0442 \u0432\u043a\u043b\u0430\u0434\u043e\u043a \u044d\u0442\u043e \u0443\u0436\u0435 \u0432\u043d\u0435 \u0443\u0440\u043e\u0432\u043d\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439. \u0411\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u0437\u0443\u0447\u0438\u0442\u044c &#171;\u0430 \u043a\u0430\u043a \u043e\u043d\u043e \u0442\u0430\u043c \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u0432\u043d\u0443\u0442\u0440\u0438&#187;, \u0447\u0442\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u0417\u0430\u0431\u0435\u0433\u0430\u044f \u0432\u043f\u0435\u0440\u0435\u0434, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u044f \u0434\u043e\u0431\u0438\u043b\u0441\u044f, \u043f\u0443\u0441\u0442\u044c \u0438 \u0441 &#171;\u043d\u043e&#187;. \u0410 \u0435\u0441\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0438 \u0432\u0430\u043c &#8212; \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c.\u042f web-\u0441\u0442\u0430\u0440\u043d\u0438\u0446\u0430, \u0442\u044b web-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u0432\u0441\u0451 web-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u041f\u0435\u0440\u0432\u043e\u0435 \u0438 \u0432\u043d\u0443\u0448\u0430\u044e\u0449\u0435\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u043c &#171;\u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435&#187; \u0432 Vivaldi \u0432\u0435\u0441\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u044d\u0442\u043e web-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u043c \u043d\u0430\u043c \u0445\u0440\u043e\u043c\u0438\u0443\u043c\u043d\u044b\u043c DevTools \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0434\u044f \u0432 vivaldi:\/\/inspect\/#apps \u0422\u0430\u043c \u043c\u044b \u0432\u0438\u0434\u0438\u043c main.html \u0438 window.html. \u041f\u0435\u0440\u0432\u043e\u0435 \u044d\u0442\u043e &#171;\u044f\u0434\u0440\u043e&#187; \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u0432\u0442\u043e\u0440\u043e\u0435 \u044d\u0442\u043e \u043d\u0430\u0448\u0438 \u043e\u043a\u043d\u0430 (\u043d\u0435 \u043f\u0443\u0442\u0430\u0442\u044c \u0441\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0430\u043c\u0438). \u0422\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u044d\u043a\u0440\u0430\u043d \u043d\u043e\u0432\u043e\u0439 \u0432\u043a\u043b\u0430\u0434\u043a\u0438 \u0432 window &#171;\u0438\u043d\u0441\u0442\u043f\u0435\u043a\u0442\u043e\u0440\u0435&#187;. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043a \u043b\u044e\u0431\u043e\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u043e\u043a\u043d\u0430.\u0410 \u0432\u043e\u0442 \u0438 \u0432\u043a\u043b\u0430\u0434\u043a\u0438. \u041d\u0430 \u0444\u043e\u043d\u0435 \u0442\u043e \u0441\u0430\u043c\u043e\u0435 dev menu\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 \u0432\u043a\u043b\u0430\u0434\u043e\u043a, \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u0434\u043b\u044f \u043d\u0430\u0441 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 window.html. \u041f\u0443\u0442\u0435\u043c \u043d\u0435\u0445\u0438\u0442\u0440\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0432 AppData\\Local\\Vivaldi\\Application\\7.9.3970.50\\resources\\vivaldi\\window.html. \u0412\u0438\u0434\u0438\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u044e \u0432 \u043f\u0443\u0442\u0438? \u042d\u0442\u043e \u0442\u043e \u0441\u0430\u043c\u043e\u0435 &#171;\u043d\u043e&#187;. \u041f\u0430\u0442\u0447\u0438\u0442\u044c window.html \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f. \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c.&lt;!&#8212; Vivaldi window document &#8212;&gt;&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt;  &lt;meta charset=&#187;UTF-8&#8243; \/&gt;  &lt;title&gt;Vivaldi&lt;\/title&gt;  &lt;link rel=&#187;stylesheet&#187; href=&#187;style\/common.css&#187; \/&gt;  &lt;link rel=&#187;stylesheet&#187; href=&#187;chrome:\/\/vivaldi-data\/css-mods\/css&#187; \/&gt;&lt;\/head&gt;&lt;body&gt;&lt;\/body&gt;&lt;\/html&gt;\u0412\u0435\u0441\u044c\u043c\u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u043e. css-mods\/css \u0443 \u0432\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u0438 \u043d\u0435 \u0431\u044b\u0442\u044c, \u043e \u043d\u0438\u0445 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043f\u043e\u0437\u0436\u0435, \u0447\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u0437\u043d\u0430\u0442\u044c &#8212; \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439, \u043f\u0443\u0441\u0442\u044c \u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b. \u042d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b vivaldi \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0448\u0430\u0431\u043b\u043e\u043d \u0434\u043b\u044f \u043b\u044e\u0431\u044b\u0445 \u043d\u043e\u0432\u044b\u0445 \u043e\u043a\u043e\u043d \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0432 \u043d\u0443\u0436\u043d\u044b\u0439 \u0435\u043c\u0443 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0432 body. \u041c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c body \u043c\u044b \u043a\u0441\u0442\u0430\u0442\u0438 \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u0435\u043c, \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043b\u044e\u0431\u0435\u0437\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043d\u0430\u0448\u0435 \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u0442\u0432\u043e \u0438 \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u044e \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0443 \u0432 \u043a\u043e\u043d\u0435\u0446 body. \u041d\u043e \u0434\u043b\u044f \u043d\u0430\u0448\u0438\u0445 \u0446\u0435\u043b\u0435\u0439 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e head. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0443\u0434\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432 \u043f\u0430\u043f\u043a\u0443 usermod_inject \u0438 \u0441\u0430\u043c \u0444\u0430\u0439\u043b scroll-to-top-tab.js.   &lt;script defer src=&#8217;.\/usermod_inject\/scroll-to-top-tab.js&#8217;&gt;&lt;\/script&gt;\u041e\u043f\u044b\u0442\u043d\u044b\u043c \u043f\u0443\u0442\u0435\u043c \u0431\u044b\u043b\u043e \u0432\u044b\u044f\u0441\u043d\u0435\u043d\u043e \u0447\u0442\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0443\u043d\u043a\u0442\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f defer, \u0438\u043d\u0430\u0447\u0435 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u043d\u0430 \u043e\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u043d\u0435\u0442 \u043d\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0411\u044b\u043b\u043e \u043e\u0447\u0435\u043d\u044c \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u043d\u0430 \u0442\u0440\u0435\u0442\u0438\u0439 \u0434\u0435\u043d\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u0445\u043e\u0440\u043e\u0448\u043e \u0447\u0442\u043e \u043d\u0435 \u043f\u043e\u0441\u043f\u0435\u0448\u0438\u043b \u0441 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u0437\u0430\u043c\u0435\u0442\u043a\u0438. \u0412 \u0446\u0435\u043b\u043e\u043c \u0441\u043a\u0430\u0436\u0443 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u0443\u044e \u0432\u0435\u0449\u044c: \u0412\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u044f\u043d\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438\u043b\u0438 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043a\u0435\u0439\u0441\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435\u0432\u0435\u0440\u043d\u043e. \u0418 \u0443\u0436 \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0431\u0435\u0437 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0447\u0443\u0436\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430. \u0410, \u0447\u0442\u043e \u0434\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0442\u043e \u0432\u043e\u0442. \u041f\u0440\u043e\u0448\u0443 \u0441\u0438\u043b\u044c\u043d\u043e \u0442\u0430\u043f\u043a\u0430\u043c\u0438 \u043d\u0435 \u043a\u0438\u0434\u0430\u0442\u044c\u0441\u044f, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u0441\u0442\u044b\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442 \u043d\u0435\u0437\u043d\u0430\u043d\u0438\u044f, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043e \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e.  \u041a\u0441\u0442\u0430\u0442\u0438, \u043d\u0435 \u043f\u044b\u0442\u0430\u0439\u0442\u0435\u0441\u044c \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c js \u043a\u043e\u0434 \u0432 body, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0437\u0430\u0449\u0438\u0442\u044b \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0435\u0433\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442. \u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442(function () {  function getActiveWebview() {    return [&#8230;document.querySelectorAll(&#171;webview&#187;)]      .find(v =&gt; {        const style = window.getComputedStyle(v);        return style.display !== &#171;none&#187; &amp;&amp; style.visibility !== &#171;hidden&#187;;      });  }  function scrollToTop() {    const webview = getActiveWebview();    if (!webview) return;    webview.executeScript({      code: `window.scrollTo({ top: 0, behavior: &#8216;smooth&#8217; });`    });  }  function setup() {    const tabStrip = document.querySelector(&#171;#tabs-container&#187;);    if (!tabStrip) return;    let startX = 0;    let startY = 0;    tabStrip.addEventListener(&#171;mousedown&#187;, (e) =&gt; {      \/\/ \u0442\u043e\u043b\u044c\u043a\u043e \u041b\u041a\u041c      if (e.button !== 0) return;      const tab = e.target.closest(&#171;.tab&#187;);      if (!tab) return;      \/\/ \u0438\u0433\u043d\u043e\u0440 \u043a\u0440\u0435\u0441\u0442\u0438\u043a\u0430      if (e.target.closest(&#171;.close&#187;)) return;      startX = e.clientX;      startY = e.clientY;      const wasActive = tab.classList.contains(&#171;active&#187;);      function onMouseUp(ev) {        \/\/ \u0442\u043e\u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443        if (ev.button !== 0) return;        const dx = Math.abs(ev.clientX &#8212; startX);        const dy = Math.abs(ev.clientY &#8212; startY);        \/\/ drag \u2192 \u0438\u0433\u043d\u043e\u0440        if (dx &gt; 5 || dy &gt; 5) return;        \/\/ \u0432\u043a\u043b\u0430\u0434\u043a\u0430 \u0437\u0430\u043a\u0440\u044b\u0442\u0430 \u2192 \u0438\u0433\u043d\u043e\u0440        if (!document.body.contains(tab)) return;        if (wasActive) {          setTimeout(scrollToTop, 50);        }      }      document.addEventListener(&#171;mouseup&#187;, onMouseUp, { once: true });    });  }  setTimeout(setup, 1000);})();\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442&#8230;&#8230;\u0434\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f.\u0414\u0430\u0431\u044b \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c &#171;\u043f\u0430\u0442\u0447\u0438\u043d\u0433&#187; \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043c \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430\u043c bat \u0444\u0430\u0439\u043b. \u0410 \u0437\u0430\u0442\u0435\u043c \u0435\u0449\u0435 \u0440\u0430\u0437 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0435 \u043f\u044f\u0442\u044c \u0441\u043b\u043e\u043c\u0430\u0435\u0442 \u0432\u0430\u043c \u0432\u0435\u0441\u044c \u0431\u0440\u0430\u0443\u0437\u0435\u0440. \u0414\u0430, \u0441\u043b\u0430\u0431\u043e\u0443\u043c\u0438\u0435 \u0430 \u043e\u0442\u0432\u0430\u0433\u0430, \u0432\u043e\u0442 \u0442\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c. \u041d\u0438\u0436\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043e\u0441\u043e\u0431\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e, \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0449\u0435\u043c \u0432\u0435\u0440\u0441\u0438\u044e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u043f\u043e \u043d\u0443\u0436\u043d\u043e\u043c\u0443 \u043f\u0443\u0442\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0442\u0440\u043e\u0447\u043a\u0443 \u0432 html, \u043f\u043e\u043f\u0443\u0442\u043d\u043e \u043a\u043e\u043f\u0438\u0440\u0443\u044f \u043d\u0443\u0436\u043d\u044b\u0439 js.\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442@echo offsetlocal enabledelayedexpansionREM === Path to Vivaldi Application ===set &#171;VIVALDI_PATH=%LOCALAPPDATA%\\Vivaldi\\Application&#187;REM === Custom variables ===set &#171;INJECT_DIR=usermod_inject&#187;set &#171;SCRIPT_NAME=scroll-to-top-tab.js&#187;REM === Find version ===set &#171;LATEST=&#187;for \/f &#171;delims=&#187; %%d in (&#8216;dir &#171;%VIVALDI_PATH%&#187; \/b \/ad-h \/o-n&#8217;) do (    if not defined LATEST (        set &#171;LATEST=%%d&#187;    ))if not defined LATEST (    echo Vivaldi version not found    pause    exit \/b)echo Found version: %LATEST%set &#171;TARGET_DIR=%VIVALDI_PATH%\\%LATEST%\\resources\\vivaldi&#187;set &#171;HTML_FILE=%TARGET_DIR%\\window.html&#187;set &#171;INJECT_PATH=%TARGET_DIR%\\%INJECT_DIR%&#187;set &#171;JS_FILE=%INJECT_PATH%\\%SCRIPT_NAME%&#187;REM === Check window.html ===if not exist &#171;%HTML_FILE%&#187; (    echo window.html not found    pause    exit \/b)REM === Create inject directory if not exists ===if not exist &#171;%INJECT_PATH%&#187; (    mkdir &#171;%INJECT_PATH%&#187;)REM === Copy JS ===if exist &#171;%SCRIPT_NAME%&#187; (    copy \/Y &#171;%SCRIPT_NAME%&#187; &#171;%JS_FILE%&#187; &gt;nul    echo JS copied to %INJECT_PATH%) else (    echo %SCRIPT_NAME% not found \u0440\u044f\u0434\u043e\u043c \u0441 bat)REM === Check is inserted js ===powershell -NoProfile -Command &#171;if ((Get-Content &#8216;%HTML_FILE%&#8217; -Raw) -match &#8216;%SCRIPT_NAME%&#8217;) { exit 1 }&#187;if %errorlevel%==1 (    echo Script already inserted    exit \/b)REM === Insert js ===powershell -NoProfile -Command &#171;$c=Get-Content &#8216;%HTML_FILE%&#8217; -Raw; $t=&#8217;  &lt;script defer src=&#187;.\/%INJECT_DIR%\/%SCRIPT_NAME%&#187;&gt;&lt;\/script&gt;&#8217;; $c -replace &#8216;&lt;\/head&gt;&#8217;, ($t + [Environment]::NewLine + &#8216;&lt;\/head&gt;&#8217;) | Set-Content &#8216;%HTML_FILE%'&#187;:endecho Donepause\u041d\u0443 \u0432\u043e\u0442 \u0442\u043e\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437\u0425\u043e\u0447\u0443 \u043d\u0435\u0441\u043a\u0443\u0447\u043d\u044b\u0435 \u043e\u0431\u043e\u0438\u042d\u0442\u0443 \u0447\u0430\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0432 \u0441\u0432\u043e\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0430\u043d\u0435\u043b\u0438 \u043d\u043e\u0432\u043e\u0439 \u0432\u043a\u043b\u0430\u0434\u043a\u0438, \u043d\u043e \u0440\u0430\u0437 \u0443\u0436 \u043c\u044b \u0443\u0436\u0435 \u0432\u043e\u0437\u0438\u043c\u0441\u044f \u0441 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u0435\u043c JS \u0442\u043e \u0442\u0430\u043a \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0449\u0435. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u044f \u043d\u0430\u0439\u0434\u0443 &#171;\u0442\u0443 \u0441\u0430\u043c\u0443\u044e&#187; \u043f\u0430\u043d\u0435\u043b\u044c\u043a\u0443 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u0435\u043d\u044f \u0443\u0441\u0442\u0440\u043e\u0438\u0442 \u0438\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u044e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u0430\u043c. (\u041d\u0443 \u0434\u0430, \u043d\u0443 \u0434\u0430). Anyway, \u043c\u0435\u0442\u043e\u0434 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f, \u043d\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0432\u043e\u0437\u0438\u0442\u0441\u044f \u0441 \u043f\u043e\u0438\u0441\u043a\u043e\u043c \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430. \u0414\u0430\u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043a\u0430\u043a \u0434\u043e\u043b\u0433\u043e \u043e\u043d\u043e \u043f\u0440\u043e\u0436\u0438\u0432\u0435\u0442, \u0434\u043e \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 html. \u0412\u0441\u0435 \u043a\u043e\u0434\u044b \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u043e\u043c.\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442(function () {  const VIDEO_PATH = &#171;.\/usermod_inject\/background-video.mp4&#187;;  let video = null;  let isSpeedDialActive = false;  let isWindowFocused = true;  function getTopOffset(container) {    const rect = container.getBoundingClientRect();    return rect.top;  }  function ensureVideo() {    if (video) return video;    video = document.createElement(&#171;video&#187;);    video.id = &#171;vivaldi-bg-video&#187;;    video.src = VIDEO_PATH;    video.autoplay = true;    video.loop = true;    video.muted = true;    video.playsInline = true;    video.style.opacity = &#171;0&#187;;    video.onloadeddata = () =&gt; {      video.style.transition = &#171;opacity 0.3s&#187;;      video.style.opacity = &#171;1&#187;;    };    return video;  }  function updatePlayback() {    const v = ensureVideo();    if (isSpeedDialActive &amp;&amp; isWindowFocused) {      if (v.paused) v.play().catch(() =&gt; {});    } else {      if (!v.paused) v.pause();    }  }  function update() {    const container =      document.querySelector(&#171;.startpage&#187;) ||      document.querySelector(&#171;.SpeedDialView&#187;);    const v = ensureVideo();    if (container) {      isSpeedDialActive = true;      const offset = getTopOffset(container);      Object.assign(v.style, {        position: &#171;absolute&#187;,        top: `-${offset}px`,        left: &#171;0&#187;,        width: &#171;100%&#187;,        height: `calc(100% + ${offset}px)`,        objectFit: &#171;cover&#187;,        zIndex: &#171;-1&#187;,        pointerEvents: &#171;none&#187;,        display: &#171;block&#187;      });      if (v.parentElement !== container) {        container.style.position = &#171;relative&#187;;        container.prepend(v);      }    } else {      isSpeedDialActive = false;      if (v.parentElement) {        v.style.display = &#171;none&#187;;      }    }    updatePlayback();  }  \/\/ === window focus ===  window.addEventListener(&#171;focus&#187;, () =&gt; {    isWindowFocused = true;    updatePlayback();  });  window.addEventListener(&#171;blur&#187;, () =&gt; {    isWindowFocused = false;    updatePlayback();  });  \/\/ === visibility API  ===  document.addEventListener(&#171;visibilitychange&#187;, () =&gt; {    isWindowFocused = !document.hidden;    updatePlayback();  });  const observer = new MutationObserver(update);  setTimeout(() =&gt; {    update();    observer.observe(document.body, {      childList: true,      subtree: true    });  }, 500);})();\u041f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c, \u0438\u0449\u0435\u043c \u043d\u0443\u0436\u043d\u044b\u0439 div \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0432\u0438\u0434\u0435\u043e \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043c \u043a\u043e\u0433\u0434\u0430 \u043e\u043a\u043d\u043e \u0432 \u0444\u043e\u043a\u0443\u0441\u0435 \u0438 \u043d\u043e\u0432\u0430\u044f \u0432\u043a\u043b\u0430\u0434\u043a\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u0430, \u0434\u0430\u0431\u044b \u043d\u0435 \u043a\u0443\u0448\u0430\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0438 \u043d\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u0432\u0438\u0434\u0435\u043e \u0432\u0441\u0435\u0433\u0434\u0430. \u0410 \u043d\u0438\u0436\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 bat \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f.@echo offsetlocal enabledelayedexpansionREM === Path to Vivaldi Application ===set &#171;VIVALDI_PATH=%LOCALAPPDATA%\\Vivaldi\\Application&#187;REM === Custom variables ===set &#171;INJECT_DIR=usermod_inject&#187;set &#171;SCRIPT_NAME=background-video.js&#187;set &#171;VIDEO_NAME=background-video.mp4&#8243;REM === Find version ===set &#171;LATEST=&#187;for \/f &#171;delims=&#187; %%d in (&#8216;dir&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-476245","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/476245","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=476245"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/476245\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=476245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=476245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=476245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}