ugrás a tartalomhoz

A felhasználói szkriptek és a fejlesztők szabadsága

Hojtsy Gábor · 2005. Már. 25. (P), 11.36
A Firefox böngészők Greasemonkey kiterjesztésével és a hozzá fejlesztett szkriptekkel már többször foglalkoztunk, örömmel adva hírt arról, hogy végre lehetőségünk van nem csak felhasználói stíluslapok, hanem saját szkriptek illesztésére is az egyes (más fejlesztők által készített) webhelyekhez. Dean Edwards tegnap egy kicsit más nézőpontból mutatta be nekünk a problémát, a frusztrált fejlesztő oldaláról, akinek az oldalán nem működnek a saját Javascript kódjai a felhasználói szkriptek beavatkozása miatt.

Most már nem csak a Firefox böngészők használói élhetnek ezzel a lehetőséggel, hiszen egy múltheti bejelentés szerint az Opera következő kiadásaiban is lehetőség lesz felhasználói szkriptek futtatására a 8-as verziótól kezdve. Fejlesztői szempontból jogosan merülhet fel az a kérdés, hogy mégis miként tudjuk megakadályozni a felhasználói szkriptek futtatását. Nos, a Greasemonkey ellen van megoldás, mint ahogy Dean ezt be is mutatja, de az Opera új funkciójára ez nincs hatással, hiszen ott az összes oldalhoz tartozó szkript lefutása elé is lehet helyezni a felhasználói műveletek végrehajtását.

document._createElement = document.createElement;
document.createElement = function(tagName, password) {
   if (tagName != "SCRIPT" || password == "My scripts are OK!") {
       return document._createElement(tagName);
   }
};
Ez a megoldás a Javascript azon lehetőségét használja ki, hogy a beépített objektum struktúrában is végrehajthatunk változtatásokat, ezzel pedig a saját createElement függvényünket is bevezethetjük, mely különleges paramétereket vár a valós működéshez, ha szkript elemeket akarunk felvenni. Így a különlegességről nem tudó felhasználói szkriptek nem tudnak külső funkcionalitást betölteni az oldalunkba.

Bár ez a javasolt ellenszer némely eseteben hatékony lehet, mégis meg kell barátkoznunk azzal a gondolattal, hogy most már nem csak az oldalunk megjelenését szabályozhatja valaki saját stíluslapja segítségével, hanem a viselkedésére is hatással lehet. Ennek megfelelően tervezni a webhely stíluslapjait és szkript állományait valószínűleg lehetetlen, hiszen nem tudjuk, hogy a képzett vagy az adott módosítóval böngésző felhasználó hol módosítja az oldalunkat, és ez milyen hatással lehet a saját szkriptjeinkre.

A legokosabb megoldás az lehet, ha előre menekülünk, és azt a nézetet követjük, hogy webhelyünknek inkább egy API-t kell biztosítania, azaz a HTML oldalaknak olyan kialakításúaknak kell lennie, amely kifejezetten alkalmas a rugalmas formálásra. Ez nemcsak a felhasználói stíluslapok és szkriptek szerzőinek dolgát könnyíti meg, hanem a saját fejlesztésünket is átláthatóvá teszi.

Köszönjük zsepi nevű felhasználónknak, hogy a hír alapját képező blog bejegyzésre felhívta figyelmünket.