Имеется кнопка 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
Отсутствует
А GM есть ? просто самое простое это в него закинуть этот код и указать сайт в шапке.
// ==UserScript== // @name Enable select // @author intronet // @version 1.0 // @include http://onlinemultfilmy.ru/* // @run-at document-start .... тут код из кнопки .........
Отредактировано jars (17-09-2015 13:00:57)
Отсутствует
jars
думаю ваш вариант не самый простой. Ведь сайтов таких не мало.. А жена не будет вникать что и куда закидывать..
Кнопка выше - универсальна, как понимаю. Только нужно доп. кликать, что не совсем удобно.
Отредактировано amid525 (17-09-2015 13:08:25)
Отсутствует
А жена не будет вникать что и куда закидывать..
Спроси жену, может понравится такой вариант, только сам закинь
Отсутствует
amid525
Удалите из скрипта строки типа // @match (если есть)
И оставьте только одну // @include *
Скрипт будет работать на всех сайтах
Еще рекомендую установить стиль
@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; } }
Отсутствует
магнитные бури сёдня чтоле...
Для гризманки:
Скрипт, переделанный из букмарклета Lex1:
// ==UserScript== // @name AllowCopy/ContextMenu // @version 1 // @author Lex1 // @namespace http://lexi.ucoz.ru/buttons.html // @description Allow Copy & Contex Menu // @match http://kinogo.net/* // @match http://www.kinogo.net/* // @match http://onlinemultfilmy.ru/* // ==/UserScript== (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){}}})(window);
или можешь засунуть этот код в инит кнопки, будет глобально. Но тогда жду в теме про "Не работают жесты" или "Проблеммы с сайтами". ибо подобная ф-ция не нужно всегда, она нужна там, где она нужна.
Отсутствует
amid525Удалите из скрипта строки типа // @match (если есть)И оставьте только одну // @include *Скрипт будет работать на всех сайтах
Еще рекомендую установить стиль:скрытый текст@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;
}
}
Остановился на вашем варианте. Всем Спасибо!
Отредактировано amid525 (18-09-2015 10:35:07)
Отсутствует
Ultima2m
обнаружил проблему в данном решении, скрипт не дает вставлять текст в окне редактирования стилей
Отредактировано amid525 (18-09-2015 12:42:49)
Отсутствует
Не помогает.
Добавлено 18-09-2015 14:19:56
Решил проблему! Отключил в настройках Scriptish "протокол данных"
Добавлено 18-09-2015 14:22:02
Ultima2m
Еще рекомендую установить стильскрытый текстВыделить
скрытый тексткодКод:скрытый текст@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; } }
Для чего он?
Отредактировано amid525 (18-09-2015 14:22:02)
Отсутствует
Ultima2m
Удалите из скрипта строки типа // @match (если есть)И оставьте только одну // @include *Скрипт будет работать на всех сайтах
, все-же, не совсем универсальное решение.. Не работает на http://zdravsite.ru/narodnye-recepty-ot-nasmorka/
Отсутствует
Ultima2m, разобрался, вставлять код в свой стиль нужно было в самом верху над строчкой
/* AGENT_SHEET */
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
Отсутствует
Потому что там на сайте идет двойной дизабл и скрпит в теле (inline) страницы отключает любые мышиные клики:
<script type="text/javascript"> var message=""; function clickIE4(){ if (event.button==2){ return false; } } function clickNS4(e){ if (document.layers||document.getElementById&&!document.all){ if (e.which==2||e.which==3){ return false; } } } if (document.layers){ document.captureEvents(Event.MOUSEDOWN); document.onmousedown=clickNS4; } else if (document.all&&!document.getElementById){ document.onmousedown=clickIE4; } document.oncontextmenu=new Function("return false") </script>
<script type="text/javascript"> function disableSelection(target){ if (typeof target.onselectstart!="undefined") //For IE target.onselectstart=function(){return false} else if (typeof target.style.MozUserSelect!="undefined") //For Firefox target.style.MozUserSelect="none" else //All other route (For Opera) target.onmousedown=function(){return false} target.style.cursor = "default" } </script>
// ВКЛ / ВЫКЛ js на странице + разрешить выделение // Результат появляется сразу без перезагрузки. const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); var uri = makeURI("data:text/css," + encodeURIComponent( "*{ -moz-user-select: text !important;}" )); // Для текущей вкладки: gBrowser.docShell.allowJavascript = !gBrowser.docShell.allowJavascript; // или глобально: // gBrowser.mPrefs.setBoolPref("javascript.enabled", !gBrowser.mPrefs.getBoolPref("javascript.enabled")); if ( sss.sheetRegistered(uri, sss.AGENT_SHEET) ) sss.unregisterSheet(uri, sss.AGENT_SHEET); else sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
Всегда будет везде работать.
Отредактировано jars (20-09-2015 12:22:13)
Отсутствует
Вот кнопка с этими двумя действиями:
Не то. Неудобна, нужно дополнительно кликать по ней. И после выделения текста, снова кликать что бы отключить, т.к не работает кнопка "добавить вкладку"..
Решение Ultima2m (скрипт и стиль) в паре, работают на автомате, ничего не нужно кликать, лишнего вроде бы, не блокируют. Пока оптимально. )
Отредактировано amid525 (20-09-2015 15:14:41)
Отсутствует
Вроде тема достаточно давняя и https://addons.mozilla.org/ru/firefox/a … httoclick/ всегда помогал.
Добавлено 20-09-2015 15:11:50
Сейчас попробовал, на http://kinogo.co/filmy_2015/ не срабатывает.
Добавлено 20-09-2015 15:13:47
Контекстное меню кстати и так можно вызвать, с зажатым shift
Отредактировано lolipop (20-09-2015 15:13:47)
Отсутствует
А как этот стиль
@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; } }
установить скриптом?
так пойдет?
var allElem = document.getElementsByTagName("*"); allElem.style.mozUserSelect = 'text !important';
То есть хочу засунуть и установку стиля в скрипт, чтобы всё в одном было.
Отсутствует
Переделал bookmarklet, теперь для копирования на сайтах работают и горячие клавиши. Нужны сайты для теста в том числе защитой засунутой в фреймы. Я переделывал по образцу, просто осовременил код и добавил отключение событий клавишь, добавил установку стиля отключающего второй тип защиты.
Но вот на счет irame у меня сомнения, что это разблокирует защиту в них, там похоже изначально они не были предусмотрены, ядля них код не добавлял.
// ==UserScript== // @name fork of AllowCopy/ContextMenu // @version 1 // @author Lex1 and Anonimous // @namespace http://lexi.ucoz.ru/buttons.html // @description Allow Copy (include hot keys) & Contex Menu // @include * // @grant none // @run-at document-start // ==/UserScript== ;(function(){ /* remove css protection */ var removeCSSPretection = function removeCSSPretectionName(protectedWindow) { var allElem = protectedWindow.document.querySelectorAll("*"); for(var i = 0; allElem.length; i++) { allElem.style['-moz-user-select'] = 'text !important'; } }; /* handler names */ var handlerNameArr = ['contextmenu', 'copy', 'cut', 'paste', 'mousedown', 'mouseup', 'beforeunload', 'beforeprint', 'keyup', 'keydown']; /* remove protection of window */ var removeProtection = function removeProtectionName(protectedWindow) { /* * document object in frames is same as window https://developer.mozilla.org/en-US/docs/Web/API/Window/frames * frames == iframe + frame */ for(var i=0; i < handlerNameArr.length; i++){ var handlerName = handlerNameArr[i]; var handlerOnName = 'on' + handlerName; if(protectedWindow[handlerName]) protectedWindow[handlerName] = null; protectedWindow.addEventListener(handlerName, function(e){ e.stopPropagation(); }, true); } }; /* remove main window protection */ removeProtection(window); removeCSSPretection(window); /* remove frame window protection */ var frameList = window.frames; for(var i = 0; i < frameList.length; i++) { try{ removeProtection(frameList[i]); removeCSSPretection(frameList[i]); } catch(e){ } } })();
Отредактировано lolipop (20-09-2015 17:44:27)
Отсутствует
amid525
Что за about:stylish?
Добавлено 20-09-2015 18:17:41
Оказывается в GreaseMonkey встроенная функция для стилей есть) Поправил код:
// ==UserScript== // @name fork of AllowCopy/ContextMenu // @version 1 // @author Lex1 and Anonimous // @namespace http://lexi.ucoz.ru/buttons.html // @description Allow Copy (include hot keys) & Contex Menu // @include * // @grant GM_addStyle // @run-at document-end // ==/UserScript== ;(function(){ /* handler names */ var handlerNameArr = ['contextmenu', 'copy', 'cut', 'paste', 'mousedown', 'mouseup', 'beforeunload', 'beforeprint', 'keyup', 'keydown']; /* remove protection of window */ var removeProtection = function removeProtectionName(protectedWindow) { /* * document object in frames is same as window https://developer.mozilla.org/en-US/docs/Web/API/Window/frames * frames == iframe + frame */ for(var i=0; i < handlerNameArr.length; i++){ var handlerName = handlerNameArr[i]; var handlerOnName = 'on' + handlerName; if(protectedWindow[handlerName]) protectedWindow[handlerName] = null; protectedWindow.addEventListener(handlerName, function(e){ e.stopPropagation(); }, true); } }; /* remove main window protection */ removeProtection(window); /* remove frame window protection */ var frameList = window.frames; for(var i = 0; i < frameList.length; i++) { try{ removeProtection(frameList[i]); } catch(e){ } } /* remove css protection */ GM_addStyle('* { -moz-user-select: text !important; } '); })();
Отредактировано lolipop (20-09-2015 18:17:41)
Отсутствует