>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Firefox http://forum.mozilla-russia.org/viewforum.php?id=4 >Выделение и копирование текста в Firefox http://forum.mozilla-russia.org/viewtopic.php?id=69644 |
vspvsp > 28-03-2016 10:54:57 |
Не секрет, что многие пионеры-школьники, пораженные манией величия, стараются всячески осложнить копирование текстов со страниц сайтов. Для этого используется перехват сочетаний клавиш всякими скриптами, замена стандартного функционала выделения текста, перекрытие текста изображениями (я в дизайне не специалист, поэтому заранее извиняюсь за возможные неточности). Вопрос: Только что упомянутая Опера вела себя именно так - если текст был, то перекрыть его было невозможно. Или авторы браузера чрезмерно уважают копирастов? |
oleg.sgh > 28-03-2016 11:04:39 |
vspvsp |
vspvsp > 28-03-2016 11:17:58 |
oleg.sgh пишет
Я им пользуюсь "в максимальном режиме", но всё же очень неудобно и не всегда получается (если сам текст загружается этим же скриптом или ещё с какими-нибудь извращениями). И с переходом всех современных сайтов на все эти "облака" и прочие распределённые извращения за счёт пользователя NoScript приходится подгонять к каждому встречному и поперечному сайту, а всяких "групповых" разрешений у него нет. |
amin01 > 28-03-2016 11:19:32 |
https://addons.mozilla.org/ru/firefox/addon/select-like-a-boss/?src=search обходит это на раз-два. можно включать когда нужно, работает без перезапуска. |
vspvsp > 28-03-2016 11:27:23 |
amin01 пишет
Благодарю, попробую применять. В поиске на этом форуме по "выделение текста" это расширение не попадается. Или я неправильно задал вопрос? И почему нет списка общеупотребительных расширений по группам? |
oleg.sgh > 28-03-2016 11:52:04 |
vspvsp |
oleg953 > 28-03-2016 12:01:05 |
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); })(); |
vspvsp > 28-03-2016 15:02:04 |
Всем спасибо, понял, что авторы собственно браузера вовсе не заботятся о желаниях пользователя и придётся самостоятельно примитивные функции допиливать, разбираясь в скриптах. |
voqabuhe > 28-03-2016 16:05:41 |
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; } } |
oleg953 > 28-03-2016 18:40:26 |
voqabuhe пишет
таки-да,а это тест http://voi.ru/ |
FireForce > 29-03-2016 05:08:50 |
vspvsp пишет
Почему же не заботятся? Вот баг-трекер Mozilla'ы, регистрируетесь, составляете заявку, пишите, так мол и так, не могу своровать картинку с сайта. Далее ваша заявка рассматривается, и если действительно такая функция оказывается необходимой, в следующих релизах в браузер добавляется кнопка „Скачать картинку бесплатно, без регистрации и SMS“. Всё просто! |
rbfyec > 29-03-2016 15:25:40 |
oleg953 пишет
А у меня этот стиль именно на сайте voi.ru не сработал. Почему бы это? Выделение появилось только если отключить скрипты. |
oleg953 > 29-03-2016 16:05:26 |
а куда пхали? В стилишь или как chrome> userContent.css? 29-03-2016 16:10:56 |
rbfyec > 29-03-2016 17:51:13 |
oleg953 пишет
Как chrome> userContent.css, стилишь у меня не установлен. |
oleg953 > 29-03-2016 18:00:59 |
тады no comment |
Vitaliy V. > 29-03-2016 21:33:12 |
rbfyec пишет
Всё правильно он сработал, там нужно и стиль использовать, и скрипты блокировать, двойная защита |
rbfyec > 29-03-2016 21:52:50 |
Vitaliy V. пишет
Точно! Я сейчас проверил - поодиночке ни стиль не работает, ни отключение скриптов. |
oleg.sgh > 29-03-2016 22:54:08 |
Vitaliy V., rbfyec |
rbfyec > 29-03-2016 23:21:56 |
С контекстным меню - это как? |
turbot > 29-03-2016 23:36:23 |
rbfyec пишет
NoScript + я полагаю, что oleg.sgh пишет
это |
Vitaliy V. > 29-03-2016 23:56:30 |
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); } |
rbfyec > 29-03-2016 23:59:02 |
turbot |
oleg.sgh > 30-03-2016 07:55:06 |
rbfyec пишет
Вы же сами написали что используете NoScript. скрытый текст turbot Без стилей, это без костылей для копирования.
Да, для каждого по своему. Если мне достаточно скопировать название кино то хватает отключить скрипт, на хитросделанном сайте, коих не так уж много. Костыли это удобно но с юзером-домохозяйкой может сыграть злую шутку...как в моем случае когда перестал работать функционал и пришлось искать причину перебирая костыли. |
rbfyec > 30-03-2016 11:08:19 |
oleg.sgh пишет
Нет, это не я писал что использую NoScript. У меня его нет, а скрипты я отключаю для конкретной вкладки кнопкой. Поэтому контекстное меню у меня для страницы, а не для выделенного фрагмента. Там нет пункта "Копировать", потому я и не мог понять, как это - копировать с контекстным меню. |
oleg.sgh > 30-03-2016 11:50:23 |
rbfyec
Виноват, промазал
Скрин выше, с выделенным текстом, с того сайта без кнопок, стилей, |
Vitaliy V. > 30-03-2016 12:09:25 |
oleg.sgh пишет
Проверьте на чистом профиле или в инспекторе гляньте |
oleg.sgh > 30-03-2016 12:23:11 |
Vitaliy V. |
voqabuhe > 30-03-2016 13:25:50 |
rbfyec пишет Нет велосипед не мой, я же там ссылку дал на автора - Vitaliy977. Если я не ошибаюсь, то здесь он присутствует как Vitaliy V., который вам и отвечает. Так что давайте соблюдать авторство. |
by-psi-x > 31-01-2017 11:21:42 |
amin01 пишет
В принципе помогло на этом сайте, но ТЕКСТ выделяет только если начинаешь выделение с ссылки, может подскажет кто-то точно такое-же только с |
oleg.sgh > 31-01-2017 11:36:03 |
by-psi-x |
yup > 31-01-2017 14:04:09 |
by-psi-x |
oleg.sgh > 24-02-2017 21:40:40 |
ww07 > 25-10-2017 23:57:44 |
Здравствуйте. Firefox последней версии 56.0.1 64 бит не выделяет текст на Алиэкспрессе. Там же некорректно ведет себя, местами, например - не увеличивает изображение при наведении курсора. Эксплорер работает нормально, т.е. защиты от копирования нет. Пробовал с чистого профиля - никакой разницы. Что это может значить? Кривая версия? Спасибо. Дополнение Enable right click стоит и с ним все работает, но хотелось бы без него и разобраться, почему так стало. |
Sergeys > 26-10-2017 11:42:03 |
ww07 |
Йцукен > 20-12-2018 13:54:12 |
Как отключить, что вместе с выделенным текстом иногда копирует всё то, что рядом с ним в том теге (при выделении обводится синей рамкой)? Причём такое поведение наблюдаю не всегда. |
Йцукен > 02-01-2019 13:27:48 |
"Лес рук", как говорят в школе. Отвечу сам: это происходит, когда вместе с мышью нажат Ctrl. |
Sector > 03-03-2020 00:39:11 |
vspvsp пишет
- Много коментов, не читал, но есть "Режим чтения" в адресной строке, включаете его и копируйте на здоровье... |