LINUX.ORG.RU

Firefox. Подружить новую вкладку с локальным файлом

 


1

2

Как сделать, чтобы в новой вкладке открывался html файл c локального диска?

Я знаю, что возможность установки локального файла для новой вкладки была заблокирована разработчиками, но быть может есть лазейки?

Надежду на это мне подарило дополнение New Tab Override, которое таки позволяет это сделать, но этот вариант меня не устраивает, ввиду того, что во вкладках, создаваемых расширениями (тех. страницах) не работают жесты мыши и прочий функционал, реализованный другими дополнениями.

Также, можно установить локальный файл для домашней страницы, но для новой вкладки возможно установить лишь открытие домашней страницы (по умолчанию), которая является совсем не тем, что установлено в качестве домашней страницы.



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

Файла omni.jar не существует вообще, есть только omni.ja. Не нашёл также и файла aboutHome.xhtml (Firefox 68.0.1).

Да и хотелось бы какое-то решение, которое могло бы быть переносимым вместе с профилем.

Dreamdrawer
() автор топика

Нашёл следующее решение.

директория_профиля/chrome/userChrome.css

@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
toolbarbutton#alltabs-button {
    -moz-binding: url("userChrome.xml#js");
}

директория_профиля/chrome/userChrome.xml

<?xml version="1.0"?>
<!-- Copyright (c) 2017 Haggai Nuchi
Available for use under the MIT License:
https://opensource.org/licenses/MIT
 -->

<bindings id="generalBindings"
   xmlns="http://www.mozilla.org/xbl"
   xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
   xmlns:xbl="http://www.mozilla.org/xbl">

  <binding id="js" extends="chrome://global/content/bindings/toolbarbutton.xml#toolbarbutton-badged">
    <implementation>
        <constructor><![CDATA[
            function makeRelativePathURI(name) {
              let absolutePath = Components.stack.filename;
              return absolutePath.substring(0, absolutePath.lastIndexOf("/") + 1) + name;
            }

            // The following code executes in the browser context,
            // i.e. chrome://browser/content/browser.xul
            Services.scriptloader.loadSubScriptWithOptions(
              makeRelativePathURI("userChrome.js"),
              {target: window, ignoreCache: true},
            );
        ]]></constructor>
    </implementation>
  </binding>
</bindings>

директория_профиля/chrome/userChrome.js

// ==UserScript==
// @name                 Custom New Tab
// @description          Load a custom link or local file, instead of the default new tab page (about:newtab).
// @author               https://www.reddit.com/user/Luke-Baker/
// @compatibility        Created 2018-01-15. Tested on Firefox 59.
// ==/UserScript==

(function() {

  // IMPORTANT: when there's no filename, be sure to include a trailing slash at the end.
  const mypage = "file:////home/abc/.mozilla/firefox/default_profile/chrome/newtab-links.html";
  // Don't place the caret in the location bar. Useful if you want a page's search box to have focus instead.
  var removefocus = "yes";
  // Clear the page's URL from the location bar. Normally not needed, as this should already be the default behavior.
  var clearlocationbar = "no";

  aboutNewTabService.newTabURL = mypage;
  function customNewTab () {
    if (removefocus == "yes") {
      setTimeout(function() {
        gBrowser.selectedBrowser.focus();
      }, 0);
    }
    if (clearlocationbar == "yes") {
      setTimeout(function() {
        if (gBrowser.selectedBrowser.currentURI.spec == mypage) {
          window.document.getElementById("urlbar").value = "";
        }
      }, 1000);
    }
  }
  gBrowser.tabContainer.addEventListener("TabOpen", customNewTab, false);

}());
Dreamdrawer
() автор топика
Ответ на: Нашёл следующее решение. от Dreamdrawer

Но это работает только когда открываешь вкладку с помощью клавосочетания Ctrl+T. Кнопка открытия новой вкладки по прежнему открывает пустую страницу, а также я пользуюсь vimium’ом, который тоже не воспринимает этого решения.

Надо либо найти другой способ, либо доработать этот.
Тему оставляю открытой.

Dreamdrawer
() автор топика
8 сентября 2019 г.

Хочу сделать страницу приватного окна белой через userChrome.css (с фиолетовым не видно клавы ночью). Не получается, хотя в инспекторе применялось. Подскажите, спецы, что я делаю не так?

html.private {
  --in-content-page-background: #fff !important;
  --in-content-page-color: black !important;
}

html.private > #startTour.button {
   background-color: #fff !important;
}
Браузер перезапускал.

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

приватного окна
не видно клавы ночью

Рукоблудишь по ночам в приватных окнах?

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