было дело, возникла как-то потребность скачивать превьюшки с саундклауда, написал для этого простенький userjs, что было делом несложным.
намедни переработал слегка это дело и выложил наконец на userscripts.org.
плюсом ко всему написал только что еще один) прячет назойливые timed комменты.
Работая над прототипами JavaScript-ядра для веб-приложения с рабочим названием «Scratch», переодически приходится использовать функцию console.log() (FireFox-плагина FireBug) для отладки JS-сценариев. Казалось бы всё хорошо, но моим любимым браузером уже много лет является Opera, а полноценного плагина FireBug для него, как вы знаете, нет. При этом, использовать альтернативные решения типа FireBug-lite и Dragonfly до сей день большого желания не возникает… А вот желание выводить на экран отладочную информацию, да так, чтобы происходило это независимо от того, в каком браузере запущено приложение и установлен ли плагин FireBug – всё же возникло, для чего была очень спешно написана следующая функция:
(function(){var wa = window.alert;
window.alert=function(){if(window.console)console.log(arguments);elsereturn wa.apply(this, arguments)}})();
(function() {
var wa = window.alert;
window.alert = function() {
if(window.console)console.log(arguments);
else return wa.apply(this, arguments) } })();
(function(){var wa = window.alert;
window.alert=function(){
window.console&& console.log(arguments);if("function"===typeof initHA){var a =Object.apply(this, arguments);
a.constructor==Array|| a.constructor==Object? message(print_r(a,"")): encode_entities(message(a))}elsereturn wa.apply(this, arguments)};/* optional */if("undefined"===typeof initHA){
window.warning=function(){};
window.error=function(){}}/* optional */})();function encode_entities(s){return s.replace(/[<>&"]/g,function(m){return{'<':'<','>':'>','&':'&','"':'"'}[m]|| m;})}function print_r(o, s){if(o.constructor==Array|| o.constructor==Object){
s +='<ul style="margin:0;padding-left:20px">';for(var i in o)if(o[i].constructor==Array|| o[i].constructor==Object){
s +="<li>["+ i +"] => "+typeof o +"</li>";
s ='<ul style="margin:0;padding-left:5px">'+ print_r(o[i], s)+"</ul>";}else s +="<li>["+ i +"] => "+ encode_entities(o[i])+"</li>";
s +="</ul>";return s
}}// usage:var w =['hello','world!'];var a =[';)'];
alert(w, a);
warning('my warning');
error('my error');// or:
message('something went wrong',"warning");
message('shit happens',"error",7500);
(function() {
var wa = window.alert;
window.alert = function() {
window.console && console.log(arguments);
if(“function” === typeof initHA) {
var a = Object.apply(this, arguments);
a.constructor == Array || a.constructor == Object ? message(print_r(a, “”)) : encode_entities(message(a))
} else return wa.apply(this, arguments)
};
/* optional */
if(“undefined” === typeof initHA) {
window.warning = function() {};
window.error = function() {}
}
/* optional */
})();
function encode_entities(s){
return s.replace(/[<>&”]/g, function(m){
return {‘<’:’<’, ‘>’:’>’, ‘&’:’&’, ‘“ ‘:’"’}[m] || m;
})
}
function print_r(o, s) {
if(o.constructor == Array || o.constructor == Object) {
s += ‘<ul style=“margin:0;padding-left:20px”>’;
for(var i in o)if(o[i].constructor == Array || o[i].constructor == Object) {
s += “<li>[“ + i + ”] => ” + typeof o + “</li>”;
s = ‘<ul style=“margin:0;padding-left:5px”>’ + print_r(o[i], s) + “</ul>”;
} else s += “<li>[“ + i + ”] => ” + encode_entities(o[i]) + “</li>”;
s += “</ul>”;
return s
}
}
// usage:
var w = [‘hello’, ‘world!’];
var a = [‘;)’];
alert(w, a);
warning(‘my warning’);
error(‘my error’);
// or:
message(‘something went wrong’, “warning”);
message(‘shit happens’, “error”, 7500);
Порою, возникает необходимость скопировать какой-то фрагмент текста со страницы (выделив его мышкой и сделав “копировать” (CTRL+C) / “вставить” (CTRL+V)). Задача согласитесь тривиальная, но некоторые сайты (например, lyrics.com) используют различные методы защиты от копирования текста. А что делать, если очень надо? С такой проблемой сегодня обратилась ко мне подружка из Германии. Действительно, кому понравится, если ему не дают? )))
Привожу свой вариант решения, JavaScript-код (bookmarklet):
оставаясь на странице, удалить всё содержимое адресной строки, вставить в неё код (см. выше), и нажать клавишу Enter;
ололо! теперь НЛО гордится тобой, так то!
Разумеется, данный код не делает ничего сверхестественного. Запускать его нужно каждый раз заново, на каждой странице, с которой необходимо скопировать текст. Хочу отметить, что данное решение не обходит все существующие методы защиты от копирования, но, если очень надо… ;)
Для тех, кто в танке — код можно сделать закладкой (поместив в избранное, а еще лучше на личную панель) и пользоваться при необходимости.