Tagged: js

0

моддинг soundcloud

было дело, воз­ник­ла как-то потреб­ность ска­чи­вать пре­вьюш­ки с саунд­кла­уда, напи­сал для это­го про­стень­кий userjs, что было делом несложным.
намед­ни пере­ра­бо­тал слег­ка это дело и выло­жил нако­нец на userscripts.org.

плю­сом ко все­му напи­сал толь­ко что еще один) пря­чет назой­ли­вые timed комменты.

enjoy!

0

console.log || alert

Рабо­тая над про­то­ти­па­ми 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);
        else return wa.apply(this, arguments)
    }
})();

Вер­сия для рабо­ты в связ­ке с HabraAlert:

(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 {'<':'&lt;', '>':'&gt;', '&':'&amp;', '"':'&quot;'}[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);

Демо

Подо­зре­ваю в буду­щем будет рефак­то­ринг и рас­ши­ре­ние функционала… ;)

0

Таааккк, ты мне дашь или не дашь?

babies_copy_paste

Порою, воз­ни­ка­ет необ­хо­ди­мость ско­пи­ро­вать какой-то фраг­мент тек­ста со стра­ни­цы (выде­лив его мыш­кой и сде­лав  “копи­ро­вать” (CTRL+C) / “вста­вить” (CTRL+V)). Зада­ча согла­си­тесь три­ви­аль­ная, но неко­то­рые сай­ты (напри­мер, lyrics.com) исполь­зу­ют раз­лич­ные мето­ды защи­ты от копи­ро­ва­ния тек­ста. А что делать, если очень надо? С такой про­бле­мой сего­дня обра­ти­лась ко мне подруж­ка из Гер­ма­нии. Дей­стви­тель­но, кому понра­вит­ся, если ему не дают? )))

При­во­жу свой вари­ант реше­ния, JavaScript-код (bookmarklet):

javascript:(function(d){d.onselectstart=d.onmousedown=d.onmouseup=null})(document);

Как поль­зо­вать­ся:

  1. зай­ти на стра­ни­цу, где не копи­ру­ет­ся текст;
  2. оста­ва­ясь на стра­ни­це, уда­лить всё содер­жи­мое адрес­ной стро­ки, вста­вить в неё код (см. выше), и нажать кла­ви­шу Enter;
  3. оло­ло! теперь НЛО гор­дит­ся тобой, так то!

Разу­ме­ет­ся, дан­ный код не дела­ет ниче­го свер­хе­сте­ствен­но­го. Запус­кать его нуж­но каж­дый раз зано­во, на каж­дой стра­ни­це, с кото­рой необ­хо­ди­мо ско­пи­ро­вать текст. Хочу отме­тить, что дан­ное реше­ние не обхо­дит все суще­ству­ю­щие мето­ды защи­ты от копи­ро­ва­ния, но, если очень надо… ;)

Для тех, кто в тан­ке — код мож­но сде­лать заклад­кой (поме­стив в избран­ное, а еще луч­ше на лич­ную панель) и поль­зо­вать­ся при необходимости.