tom000 - Personal Website - Strona główna
decor1 Tag: javascript decor2
11.112011
13:26
Komentarze: 0

Ukrywanie adresu linku

JavaScriptCiężko mi było dopasować do tego tematu tytuł, ale chciałem dzisiaj opisać małą sztuczkę polegająca na takiej podmianie docelowego adresu, że osoba odwiedzająca stronę, nie jest świadoma tak naprawdę na jaką stronę zostanie przeniesiona po kliknięciu w dany link. Zacznę od zaprezentowania demo, tego prostego skryptu.
Poniżej znajduje się kod JavaScript/HTML, który pozwala „ukryć” docelowy adres linku:

function LinkMonitor(links) {
    
    this.monitorURL = 'http://test.com/?url=';
    var scope = this;
    
    for(var i=0; i<links.length; ++i) {
        links[i].onmousedown = function(event) {
            scope.changeLink(this);
        }
        links[i].onmouseup = function() {
            scope.clearLink(this);
        }
        links[i].onmouseout = function() {
            scope.clearLink(this);
        }
    }
    
    if(LinkMonitor.prototype_initialized != 'undefined') {
        LinkMonitor.prototype.changeLink = function(a) {
            a.href = this.monitorURL + a.href;
        }
        
        LinkMonitor.prototype.clearLink = function(a) {
            setTimeout(function(domLink) {
                    domLink.href = domLink.href.replace(scope.monitorURL,'');
                }, 100, a
            );
        }
    }
}

window.onload = function() {
    new LinkMonitor(document.links);
}

Idea działania jest bardzo prosta. Po załadowaniu drzewa DOM przekazujemy tablicę z linkami, których kliknięcia mają być monitorowane. Obserwowane są zdarzenia wciśnięcia i puszczenia klawisza myszy. Aby obsłużyć prawy przycisk myszy (np. kopiowanie adresu linku) obserwowane jest również zdarzenie „wyjścia” poza obszar linku. Jeżeli kopiowany adres ma być jednak oryginalny, a nie ten podmieniony to można zrezygnować ze zdarzenia „mouseout” i przy „mousedown” wykrywać kliknięcia przycisków event.button==0 i event.button==1. Ze względu, że zdarzenie 'mouseup' jest wcześniej niż 'click' na którym następuje wywołanie linku, dodane jest opóźnienie (100ms) przed przywróceniem oryginalnego linku.

Jak to wykorzystać? Oprócz zwykłego oszukiwania można przede wszystkim wykorzystać to do monitorowania aktywności użytkowników – np. kliknięć w linki zewnętrzne na stronie (robi tak. m.in. Google i Facebook), tak żeby użytkownik nie widział że jest monitorowany.

03.022011
19:59
Komentarze: 0

QooXdoo – łatwe budowanie aplikacji RIA

Już jakiś czas temu odkryłem tą, jak dla mnie świetną bibliotekę dla języka JavaScript. Wspominam tu o niej, gdyż biblioteka ta nie wydaje mi się szczególnie popularna – sam ją odkryłem zaledwie kilka miesięcy temu. Wydawana jest m.in. na licencji LGPL, co znacznie ułatwi jej użycie w komercyjnych projektach – bez potrzeby kupowania licencji.
W skład biblioteki wchodzi pokaźna liczba komponentów, różne struktury do przechowywania danych, tabelki, okna, animacje, wsparcie dla AJAX niskopoziomowe jak i przez RPC, wsparcie dla tworzenia różnych wersji językowych, itd. Na całość można nałożyć jedną z kilku aktualnie dostępnych skórek. QooXdoo wprowadza własny mechanizm definiowania klas (metod/atrybutów zwykłych  jak i statycznych), i system pakietów podobny jak w Javie (sposób nazewnictwa klas musi odpowiadać ich położeniu w strukturze katalogów).

 

Przykłady komponentów QooXdoo.

Po pobraniu biblioteki, za pomocą dołączonych skryptów pythona można utworzyć nowy projekt. Przy tworzeniu nowych klas, lub dołączaniu do projektu klas z frameworka, również należy uruchomić skrypt generujący plik z wymaganymi zależnościami. Ten sam skrypt pozwoli również na generowanie plików tłumaczeń, sprawdzenie poprawności tworzonych plików, formatowanie kodu źródłowego, przygotowanie środowiska testowego, tworzenie wersji dystrybucyjnej, czy nawet wygenerowanie dokumentacji HTML (w stylu QooXdoo).
Na stronie projektu możemy znaleźć krótki tutorial jak zacząć pracę z tą biblioteką, wersję demonstracyjną z podglądem kodu źródłowego, oraz dokumentację API.
Oprócz standardowego pisania kodu w JavaScript, w QooXdoo, można pisać również w Javie (QWT), gdzie później kod ten zostanie przekształcony na JavaScript.
Myślę, że QooXdoo stanowi bardzo dobrą alternatywę dla znacznie bardziej popularnego ExtJS.

19.042009
20:17
Komentarze: 1

Edytor JavaScript z obsługą JQuery

Jquery i Aptana logoDzisiaj zabrałem się za poszukiwania jakiegoś edytora JavaScript, który będzie wspierał framework  JQuery. Poszukiwania zabrały mi kilka godzin z dnia. Miałem wtedy do czynienia z różnymi narzędziami (m.in. Komodo 5, czy modyfikacja plugina do Eclipse – javactp), jednak nie działały prawidłowo lub nie spełniły moich oczekiwań. Ostatecznie trafiłem na aplikację bazującą na projekcie Eclipse – Aptana Studio.


Z Aptana Studio miałem już wcześniej do czynienia. Właściwie to nigdy jej nie używałem, ale leżała u mnie na dysku. Dzisiaj pobrałem najnowszą wersję i tu zaczęły się kolejne kłopoty. Z jakiegoś nieznanego powodu program ciągle mi się wysypywał przy uruchamianiu. W końcu jak się okazało Aptana wymaga bibloteki Xulrunner w wersji 1.8 (ja miałem 1.9), po jej przekompilowaniu program zaczął działać.

Aptana - opcje

Do obsługi JQuery w Aptana Studio po otwarciu pliku z kodem JavaScript musiałem dodać w preferencjach edytora obsługę biblioteki JQuery, gdyż domyślnie była wyłączona.

 

Aptana - JQuery

Aptana Studio z obsługa JQuery podczas działania

 

Teraz to już wszystko poprawnie działa. W najbliższych planach mam zapoznanie się z tą aplikacją – kto wiem, może to będzie mój następca Eclipse :).

Copyleft (C) tom000.info 2004-2012. Some rights reserved.