Полезная информация

В мире Mozilla происходит много интересных событий. Но вам не нужно постоянно посещать новостные сайты, чтобы быть в курсе всех изменений. Зайдите на ленту новостей Mozilla Россия.
  • Форумы
  •  » Firefox
  •  » Выделение и копирование текста в Firefox

№128-03-2016 10:54:57

vspvsp
Участник
 
Группа: Members
Зарегистрирован: 28-03-2016
Сообщений: 14
UA: Firefox 44.0

Выделение и копирование текста в Firefox

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

Вопрос:
Существуют ли возможности без танцев с бубном (отключения скриптов на конкретной странице, просмотра кода и прочих извращений) запретить странице и скриптам каким-либо образом запрещать выделение и копирование и перекрытие текста?

Только что упомянутая Опера вела себя именно так - если текст был, то перекрыть его было невозможно. Или авторы браузера чрезмерно уважают копирастов?

Отсутствует

 

№228-03-2016 11:04:39

oleg.sgh
Участник
 
Группа: Members
Зарегистрирован: 19-04-2014
Сообщений: 3157
UA: Firefox 46.0

Re: Выделение и копирование текста в Firefox

vspvsp
NoScript и подобные.

Отсутствует

 

№328-03-2016 11:17:58

vspvsp
Участник
 
Группа: Members
Зарегистрирован: 28-03-2016
Сообщений: 14
UA: Firefox 44.0

Re: Выделение и копирование текста в Firefox

oleg.sgh пишет

vspvsp
NoScript и подобные.

Я им пользуюсь "в максимальном режиме", но всё же очень неудобно и не всегда получается (если сам текст загружается этим же скриптом или ещё с какими-нибудь извращениями).

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

Отсутствует

 

№428-03-2016 11:19:32

amin01
^_^
 
Группа: Members
Зарегистрирован: 26-10-2010
Сообщений: 932
UA: Firefox 37.0

Re: Выделение и копирование текста в Firefox

https://addons.mozilla.org/ru/firefox/addon/select-like-a-boss/?src=search обходит это на раз-два. можно включать когда нужно, работает без перезапуска.

Отсутствует

 

№528-03-2016 11:27:23

vspvsp
Участник
 
Группа: Members
Зарегистрирован: 28-03-2016
Сообщений: 14
UA: Firefox 44.0

Re: Выделение и копирование текста в Firefox

amin01 пишет

https://addons.mozilla.org/ru/firefox/addon/select-like-a-boss/?src=search обходит это на раз-два. можно включать когда нужно, работает без перезапуска.

Благодарю, попробую применять. В поиске на этом форуме по "выделение текста" это расширение не попадается. Или я неправильно задал вопрос?

И почему нет списка общеупотребительных расширений по группам?

Отсутствует

 

№628-03-2016 11:52:04

oleg.sgh
Участник
 
Группа: Members
Зарегистрирован: 19-04-2014
Сообщений: 3157
UA: Firefox 46.0

Re: Выделение и копирование текста в Firefox

vspvsp
RightToClick

Отсутствует

 

№728-03-2016 12:01:05

oleg953
Участник
 
Группа: Members
Откуда: Ростов где Дон
Зарегистрирован: 07-05-2014
Сообщений: 557
UA: Firefox 38.0

Re: Выделение и копирование текста в Firefox

Allow copy/context menu - а это кнопочка ни разу не подвела

скрытый текст

Выделить код

Код:

(function(w){
        var arr = ['contextmenu','copy','cut','paste','mousedown','mouseup','beforeunload','beforeprint'];
        for(var i = 0, x; x = arr[i]; i++){
            if(w['on' + x])w['on' + x] = null;
            w.addEventListener(x, function(e){e.stopPropagation()}, true);
        };
        for(var j = 0, f; f = w.frames[j]; j++){try{arguments.callee(f)}catch(e){}}
})(content);                                                                                                                                                                                                                                                      function Exporter(toFileSet)
{
  Object.defineProperty(this, "toFileSet", {get: function(){ return toFileSet; }});
  var converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter);
  converter.charset = "UTF-8";
  Object.defineProperty(this, "converter", {get: function(){ return converter; }});
};

Exporter.prototype=
{
  styles: null,
  mDBConn: null,
  exportFile: null,
  
  toString: function() { return "[custombuttons.stylish-exporter]"; },
  
  handleEvent: function(event)
  {
    this.exportFile = this.toFileSet ? this.pickDirectory() : this.pickFile();
    if (!this.exportFile) return;
    this.getStyles();
  },
  
  pickFile: function()
  {
    var fp=Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
    fp.init(window, "Укажите файл экспорта", Ci.nsIFilePicker.modeSave);
    fp.appendFilter("Каскадные таблицы стилей (css)","*.css");
    var res = fp.show();
    if (res == Ci.nsIFilePicker.returnCancel)
        return null;
    var cssFile = fp.file;
    if (!/\.css$/i.test(cssFile.path)) cssFile.initWithPath(cssFile.path+".css");
    return cssFile;
  },
  
  pickDirectory: function()
  {
    var fp=Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
    fp.init(window, "Укажите папку для экспорта", Ci.nsIFilePicker.modeGetFolder);
    return fp.show()==Ci.nsIFilePicker.returnOK ? fp.file : null;
  },
  
  getStyles: function()
  {
    var dbFile = Services.dirsvc.get("ProfD", Ci.nsIFile);
    dbFile.append("stylish.sqlite");
    var ssvc=Cc["@mozilla.org/storage/service;1"].getService(Ci.mozIStorageService);
    this.mDBConn = ssvc.openDatabase(dbFile);
    var stmt = this.mDBConn.createStatement("SELECT name, code from styles");
    this.styles=[];
    stmt.executeAsync(this);
  },

  prepareStyles: function()
  {
    var data;
    if (!this.toFileSet)
    {
      var content = [];
      this.styles.forEach(function(elem)
      {
        content = content.concat(["/*", elem.name,"*/", elem.style, ""]);
      });
      data=[{file: this.exportFile, content: content.join("\n")}];
    }
    else
    {
      data=this.styles.map((function(elem)
      {
        var file = this.exportFile.clone();
        file.append(elem.name.replace(/[\\\/\:\*\?"<>\|]/g,"-").replace(/^\.|\.$/g,"_")+".css");
        return {file: file, content: ["/*", elem.name,"*/", elem.style].join("\n")};
      }).bind(this));
    }
    this.saveStyles(data);
  },
  
  saveStyles: function(data)
  {
    if (data.length==0)
    {
      custombuttons.alertSlide("Экспорт стилей Stylish", "Стили успешно экспортированы.");
      return;
    }
    Cu.import("resource://gre/modules/FileUtils.jsm");
    Cu.import("resource://gre/modules/NetUtil.jsm");
    var style = data.shift();
    var ostream = FileUtils.openSafeFileOutputStream(style.file)
    var istream = this.converter.convertToInputStream(style.content);
    NetUtil.asyncCopy(istream, ostream, (function(status)
    {
      if (!Components.isSuccessCode(status))
        Services.prompt.alert(null, "Ошибка","Ошибка сохранения стилей (код: "+status+")");
      else
        this.saveStyles(data);
    }).bind(this));
  },
  
  handleResult: function(aResultSet) 
  {
    for (let row = aResultSet.getNextRow(); row; row = aResultSet.getNextRow())
      this.styles.push({name: row.getResultByName("name"), style: row.getResultByName("code")});
  },
  
  handleError: function(aError) 
  {
    Services.prompt.alert(null, "Ошибка выполнения запроса", aError.message);
  },
  
  handleCompletion: function(aReason) 
  {
    this.mDBConn.asyncClose((function()
    {
      delete this.mDBConn;
    }).bind(this));
    this.prepareStyles();
  }
};

(function()
{
  if (document.getElementById("stylish-export-styles-to-file")) return;
  var miToSingleFile = document.createElement("menuitem");
  miToSingleFile.id = "stylish-export-styles-to-file";
  miToSingleFile.setAttribute("label", "в файл");
  var miToSetFiles = document.createElement("menuitem");
  miToSetFiles.id = "stylish-export-styles-to-set-files";
  miToSetFiles.setAttribute("label", "в набор файлов");
  var popup = document.createElement("menupopup");
  popup.appendChild(miToSingleFile);
  popup.appendChild(miToSetFiles);
  var menu = document.createElement("menu");
  menu.id="stylish-export-styles";
  menu.setAttribute("label","Экспортировать стили");
  menu.appendChild(popup);
  let sn = document.evaluate("//xul:popupset[@id='mainPopupSet']/descendant::xul:menuitem[@id='stylish-manage']/following-sibling::node()[position()=1]",
    document, function() { return "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; },
    Ci.nsIDOMXPathResult.ANY_UNORDERED_NODE_TYPE, null);
  sn.singleNodeValue.parentNode.insertBefore(menu, sn.singleNodeValue);
  miToSingleFile.addEventListener("click", new Exporter(false), false);
  miToSetFiles.addEventListener("click", new Exporter(true), false);
})();

Отсутствует

 

№828-03-2016 15:02:04

vspvsp
Участник
 
Группа: Members
Зарегистрирован: 28-03-2016
Сообщений: 14
UA: Firefox 44.0

Re: Выделение и копирование текста в Firefox

Всем спасибо, понял, что авторы собственно браузера вовсе не заботятся о желаниях пользователя и придётся самостоятельно примитивные функции допиливать, разбираясь в скриптах.

Отсутствует

 

№928-03-2016 16:05:41

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 48.0

Re: Выделение и копирование текста в Firefox

vspvsp
Может стиль поможет?

Выделить код

Код:

@namespace html url("http://www.w3.org/1999/xhtml");
@-moz-document url-prefix(http://), url-prefix(https://), url-prefix(ftp://) {
* {
  -moz-user-select: text !important;
 }  
}

Отсутствует

 

№1028-03-2016 18:40:26

oleg953
Участник
 
Группа: Members
Откуда: Ростов где Дон
Зарегистрирован: 07-05-2014
Сообщений: 557
UA: Firefox 38.0

Re: Выделение и копирование текста в Firefox

voqabuhe пишет

Может стиль поможет?

таки-да,а это тест http://voi.ru/

Отсутствует

 

№1129-03-2016 05:08:50

FireForce
Участник
 
Группа: Members
Зарегистрирован: 18-01-2010
Сообщений: 463
UA: Firefox 45.0

Re: Выделение и копирование текста в Firefox

vspvsp пишет

Всем спасибо, понял, что авторы собственно браузера вовсе не заботятся о желаниях пользователя и придётся самостоятельно примитивные функции допиливать, разбираясь в скриптах.

Почему же не заботятся? Вот баг-трекер Mozilla'ы, регистрируетесь, составляете заявку, пишите, так мол и так, не могу своровать картинку с сайта. Далее ваша заявка рассматривается, и если действительно такая функция оказывается необходимой, в следующих релизах в браузер добавляется кнопка „Скачать картинку бесплатно, без регистрации и SMS“. Всё просто!

Отсутствует

 

№1229-03-2016 15:25:40

rbfyec
Участник
 
Группа: Members
Зарегистрирован: 07-07-2012
Сообщений: 365
UA: Firefox 29.0

Re: Выделение и копирование текста в Firefox

oleg953 пишет
voqabuhe пишет

Может стиль поможет?

таки-да,а это тест http://voi.ru/

А у меня этот стиль именно на сайте voi.ru не сработал. Почему бы это?

Выделение появилось только если отключить скрипты.

Отсутствует

 

№1329-03-2016 16:05:26

oleg953
Участник
 
Группа: Members
Откуда: Ростов где Дон
Зарегистрирован: 07-05-2014
Сообщений: 557
UA: Firefox 38.0

Re: Выделение и копирование текста в Firefox

А у меня этот стиль именно на сайте voi.ru не сработал.

а куда пхали? В стилишь или как chrome> userContent.css?

Добавлено 29-03-2016 16:10:56
а ещё если Greasemonkey стоит то очень даже хороший скриптик AllowCopyContextMenu.user.js

Отредактировано oleg953 (29-03-2016 16:10:56)

Отсутствует

 

№1429-03-2016 17:51:13

rbfyec
Участник
 
Группа: Members
Зарегистрирован: 07-07-2012
Сообщений: 365
UA: Firefox 29.0

Re: Выделение и копирование текста в Firefox

oleg953 пишет

А у меня этот стиль именно на сайте voi.ru не сработал.

а куда пхали? В стилишь или как chrome> userContent.css?

Как chrome> userContent.css, стилишь у меня не установлен.

Отсутствует

 

№1529-03-2016 18:00:59

oleg953
Участник
 
Группа: Members
Откуда: Ростов где Дон
Зарегистрирован: 07-05-2014
Сообщений: 557
UA: Firefox 38.0

Re: Выделение и копирование текста в Firefox

chrome> userContent.css

тады no comment :(
m

Отсутствует

 

№1629-03-2016 21:33:12

Vitaliy V.
Участник
 
Группа: Members
Зарегистрирован: 19-09-2014
Сообщений: 2186
UA: Firefox 47.0

Re: Выделение и копирование текста в Firefox

rbfyec пишет

А у меня этот стиль именно на сайте voi.ru не сработал. Почему бы это?
Выделение появилось только если отключить скрипты.

Всё правильно он сработал, там нужно и стиль использовать, и скрипты блокировать, двойная защита

Отсутствует

 

№1729-03-2016 21:52:50

rbfyec
Участник
 
Группа: Members
Зарегистрирован: 07-07-2012
Сообщений: 365
UA: Firefox 29.0

Re: Выделение и копирование текста в Firefox

Vitaliy V. пишет
rbfyec пишет

А у меня этот стиль именно на сайте voi.ru не сработал. Почему бы это?
Выделение появилось только если отключить скрипты.

Всё правильно он сработал, там нужно и стиль использовать, и скрипты блокировать, двойная защита

Точно! Я сейчас проверил - поодиночке ни стиль не работает, ни отключение скриптов.
А если вместе - выделение есть.

Отсутствует

 

№1829-03-2016 22:54:08

oleg.sgh
Участник
 
Группа: Members
Зарегистрирован: 19-04-2014
Сообщений: 3157
UA: Firefox 46.0

Re: Выделение и копирование текста в Firefox

Vitaliy V., rbfyec
voi.ru  Все выделяется и копируется с отключенными скриптами и без стилей...с контекстным меню.
Пробовал ставить стили и скрипты пока они не обрезали функционал на одном сайте. Удалил.

Отредактировано oleg.sgh (29-03-2016 22:56:24)

Отсутствует

 

№1929-03-2016 23:21:56

rbfyec
Участник
 
Группа: Members
Зарегистрирован: 07-07-2012
Сообщений: 365
UA: Firefox 29.0

Re: Выделение и копирование текста в Firefox

Vitaliy V., rbfyec
voi.ru  Все выделяется и копируется с отключенными скриптами и без стилей...с контекстным меню.

С контекстным меню - это как?
Что надо сделать, чтобы скопировать?

Отредактировано rbfyec (29-03-2016 23:23:24)

Отсутствует

 

№2029-03-2016 23:36:23

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 48.0

Re: Выделение и копирование текста в Firefox

rbfyec пишет

Что надо сделать, чтобы скопировать?

NoScript + я полагаю, что

oleg.sgh пишет

без стилей

это thumb.jpg 
Хотя по мне, так проще в вышеприводимом стиле исключения сделать для сайтов (через регулярку), где он мешает. Или наоборот - назначить только для сайтов, где нужен.

Отсутствует

 

№2129-03-2016 23:56:30

Vitaliy V.
Участник
 
Группа: Members
Зарегистрирован: 19-09-2014
Сообщений: 2186
UA: Firefox 47.0

Re: Выделение и копирование текста в Firefox

oleg.sgh пишет

с контекстным меню

У меня кнопка стили отключает/включает

скрытый текст

Выделить код

Код:

var win = event.target.ownerDocument.defaultView;
var viewStyle = win.getMarkupDocumentViewer().authorStyleDisabled;
try {
    if(viewStyle) {
        win.gPageStyleMenu.switchStyleSheet("");
    } else {
        win.gPageStyleMenu.disableStyle();
    }
} catch(e) {
    win.setStyleDisabled(!viewStyle);
}

Отредактировано Vitaliy V. (30-03-2016 00:00:22)

Отсутствует

 

№2229-03-2016 23:59:02

rbfyec
Участник
 
Группа: Members
Зарегистрирован: 07-07-2012
Сообщений: 365
UA: Firefox 29.0

Re: Выделение и копирование текста в Firefox

turbot
А, ясно! Я сначала просто не понял, что значит "без стилей".

Отредактировано rbfyec (29-03-2016 23:59:37)

Отсутствует

 

№2330-03-2016 07:55:06

oleg.sgh
Участник
 
Группа: Members
Зарегистрирован: 19-04-2014
Сообщений: 3157
UA: Firefox 46.0

Re: Выделение и копирование текста в Firefox

rbfyec пишет

Vitaliy V., rbfyec
voi.ru  Все выделяется и копируется с отключенными скриптами и без стилей...с контекстным меню.

С контекстным меню - это как?
Что надо сделать, чтобы скопировать?

Вы же сами написали что используете NoScript.

скрытый текст
b-6847.png

turbot
Без стилей, это без костылей для копирования.

Хотя по мне, так проще в вышеприводимом стиле исключения сделать для сайтов

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

Отсутствует

 

№2430-03-2016 11:08:19

rbfyec
Участник
 
Группа: Members
Зарегистрирован: 07-07-2012
Сообщений: 365
UA: Firefox 29.0

Re: Выделение и копирование текста в Firefox

oleg.sgh пишет
rbfyec пишет

Vitaliy V., rbfyec
voi.ru  Все выделяется и копируется с отключенными скриптами и без стилей...с контекстным меню.

С контекстным меню - это как?
Что надо сделать, чтобы скопировать?

Вы же сами написали что используете NoScript.

скрытый текст
b-6847.png

Нет, это не я писал что использую NoScript. У меня его нет, а скрипты я отключаю для конкретной вкладки кнопкой.
Но на том сайте, даже если отключить скрипты (но не применять стиль от voqabuhe или вовсе не отключить стили), выделение отсутствует.

Поэтому контекстное меню у меня для страницы, а не для выделенного фрагмента. Там нет пункта "Копировать", потому я и не мог понять, как это - копировать с контекстным меню.

Отсутствует

 

№2530-03-2016 11:50:23

oleg.sgh
Участник
 
Группа: Members
Зарегистрирован: 19-04-2014
Сообщений: 3157
UA: Firefox 46.0

Re: Выделение и копирование текста в Firefox

rbfyec

Нет, это не я писал что использую NoScript.

Виноват, промазал :P

Но на том сайте, даже если отключить скрипты (но не применять стиль от voqabuhe или вовсе не отключить стили), выделение отсутствуе

Скрин выше, с выделенным текстом, с того сайта без кнопок, стилей, скриптов но с отключенным джава скрипт. Может что то с кнопкой не то...
Можно проверить отключив скрипты в about:config -  javascript.enabled

Отредактировано oleg.sgh (30-03-2016 12:47:03)

Отсутствует

 
  • Форумы
  •  » Firefox
  •  » Выделение и копирование текста в Firefox

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]