Magyar Opera

Website Monitor / Update Scanner alternatíva Operában

A most bemutatott userJS jelenleg még béta állapotban van és csak azért teszem közzé, mert a fejlesztője, Baldric, időhiányban nem tudja folytatni.

De előbb egy kis magyarázat, mire is jó ez az egész. Az RSS-t remélhetőleg mindenki ismeri. Egy nagyon jó idő, sávszélesség és idegrendszer kímélő megoldás, amivel egy központi kliensben, például az Opera beépített RSS olvasójában megkapjuk a híreket, amikre feliratkoztunk egy kattintással.

Sajnos napjainkban nem örvend túl nagy elterjedtségnek, aminek az ismertség hiánya lehet az oka, elvégre egy forradalmi megoldásról van szó.

Éppen emiatt elég kevés helyen alkalmazzák és ahol alkalmazzák ott is általában csak egyszerűen a hírekre, esetleg még a kommentekre (mint itt), de nem használják ki a specifikációban rejlő lehetőségeket.

Erre még rátett egy lapáttal az Internet Explorer, Firefox és Safari részleges implementációja, amivel a könyvjelzők szintjére degradálták le ezt az XML lehetőségeivel bíró szabványt. A Google nem is tartotta fontosnak az implementációt a böngészőjébe.

De mielőtt nagyon eltérnék a tárgytól, lényegében emiatt van szükség olyan megoldásokra, mint a címben szereplő két kiegészítő és mivel ezek egyike sem létezik Operára, ezért van szükség a cikk további részében bemutatott userJS-re, ami sok szempontból még fejlettebb is, mint a fenti két megoldás, habár felhasználóbarátnak nem igazán mondható, de mint említettem, még csak béta.

Működése:

  • Element alapon működik. Kijelöljük azokat az elemeket, amiket figyelni akarunk (ahogy a NoAds-ban), majd kattintunk, az oldal újratöltődik és eltárolódik a domainspecifikusan a Local Storage-ban.
  • Az lap frissítésekor összehasonlítja az eltárolt tartalmat az aktuális tartalommal, ha változás van, akkor bekeretezi box-shadow használatával azt a DIV-et, amely tartalma megváltozott és hangjelzést ad, valamint, hogy Visual Tabs-szal is kompatibilis legyen, megjelenik két nagy piros felkiáltójel az oldalon, egy absolute a bal felső sarokban és egy fixed pozíciós középen.
  • Ha rávisszük a felkiáltójelekre az egeret (és azok eltűnnek) azzal eltároltuk a változást és az aktuális tartalomhoz fog innentől fogva a következő frissítés alkalmával viszonyítani. Amíg ez nem történik meg, minden egyes frissítési periódusban hangjelzést ad és kiteszi a két felkiáltójelet.
  • Változáskor automatikusan a legfelső megváltozott elemhez görgeti az oldalt.

Használata:

  • Helyezzük el a UserJS-t a userjs mappánkban.
  • Csináljunk egy billentyűparancsot, mozdulatparancsot, sajátgombot vagy könyvjelzőt, amelyik nekünk a legszimpatikusabb a következő paranccsal: Go to page, "javascript:forumAlert.on_off(); void 0"
  • A fenti paranccsal fogjuk tudni majd aktiválni a kijelölő keretet, amivel utána egérrel kiválasztjuk az oldal figyelni kívánt elemeit.
  • Miután kijelöltük a figyelni kívánt területet, két lehetőségünk van. Állítsunk be igény szerinti periodikus frissítést. Ez persze oldalfüggő. Ahol csak hetente van változás, azért felesleges nyitva tartani egy fület. Ha legközelebb meglátogatjuk és van változás, akkor jelezni fog nekünk a script.
  • Kombinálhatjuk az Opera Unite Webserver nevű alkalmazásával. Ez pörgősebb oldalaknál hasznos, mert a periodikus újratöltés az oldalt teljes egészében újraellenőrzi, tehát nagyobb a CPU használat, adatforgalom és a szerverre rótt terhelés is. A Unite segítségével pedig egy általunk (némi HTML ismeret birtokában) meghatározott méretű iframe-ben elhelyezhetjük a figyelni kívánt oldalakat. Ez esetben a mellékelt HTML fájlban kell megadni a frissítési gyakoriságot milliszekundumban.
  • Ha hibáztunk és rossz elemet jelöltünk ki, vagy már nincs rá szükségünk, akkor az opera:webstorage oldalon tudjuk törölni a domainhez tartozó rekordokat. Ugyanez törlés nélkül is működik, ha a fent említett parancsot újra kiadjuk és kijelölünk valami mást, ami felülírja a korábbit.

Unite:

  • Indítsuk el az Opera Unite-ot és a Webserver nevű alkalmazást.
  • Tallózzunk be a Webserverben egy tetszőleges könyvtárat, amiben a HTML fájl (nem a userJS!) található. Ha már van betallózott könyvtárunk, akkor értelemszerűen helyezzük el benne a HTML fájlt).
  • Nyissuk meg valamilyen szövegszerkesztővel a UserJS-t.
  • A második sort módosítsuk erről: forumAlert.domain = ''; erre: forumAlert.domain = 'http://admin.home.NEVED.operaunite.com';
  • Nyissuk meg a HTML fájlt és keressük meg a 67. sorban a self.setInterval(refresh,300000);-t
  • A 300000 ms-t (ami 5 perc) módosítsuk tetszőleges értékre. Sajnos itt csak globális frissítési értéket tudunk megadni, ami minden itt behívott oldalra érvényes lesz.
  • Nyissuk meg Webserveren keresztül a frames.html-t, majd az EDIT linkre kattintva a piros keretbe adjuk meg egymás alá a figyelni kívánt címeket.
  • Fontos (1): A figyelni kívánt címeknek ugyannnak kell lennie, amelyen a scripttel kijelöltük a figyelni kívánt elemeket. Vagyis ha a www.example.com-on tároltuk el a figyelendő elemeket és a sima example.com-ot adjuk meg, akkor nem fog jelezni. Éppen emiatt lehetőleg próbáljunk óvakodni a felesleges paraméterektől az URL mezőben.
  • Fontos (2): Az URL utolsó karaktere nem lehet # (azaz kettőskereszt). Ha ilyen van, akkor töröljük a végéről. Ha a kettőskereszt után anchor van (például #comments), akkor természetesen maradhat.
  • Miután megadtuk a kívánt oldal(aka)t, kattintsunk a SAVE linkre.
  • Fontos (3): Olyan oldalakon, ahol regisztációhoz van kötve az általunk figyelni kívánt tartalom, sajnos csak abban az esetben működik, ha figyelni kívánt oldalon az "Minden sütit elfogad" opció van bejelölve.

frames.html letöltése

UserJS telepítése

Adblock Plus Operában - harmadik felvonás

Ez az írás nem lesz olyan hosszú, mint a korábbiak és részben a 11.10 által bevezetett display:none módosítás kapcsán jött létre.

Akik követték az eseményeket, tudják miről van szó, akik nem, azoknak pár mondatban: Az Opera a kompatibilitás növelése érdekében a 11.10-ben megváltoztatta a működését a CSS display tulajdonság esetében.

Az ajánlás nem tér ki minden részletre, mint például arra, hogy be kell-e tölteni az elrejtett tartalmakat addig, amíg azok meg nem jelennek az oldalon. A többi böngésző fejlesztői úgy gondolták, hogy igen. Ez azt okozta az évek során, hogy sokan kényelemből, sokan JS tudás hiányában olyan esetekben alkalmazták a display:none szabályt, amikor nem kellett volna.

A probléma inkább esztétikai jelentőségű volt, vagyis ilyenkor az Operában, az egyetlen olyan böngészőben, ami nem töltötte be a display:none tulajdonsággal ellátott tartalmakat, elkezdtek villogni, mivel akkor töltötte be, amikor az adott eseményre (például mouseover) megváltozott az elem display tulajdonsága.

A két legszembetűnőbb példája, hogy mikor egy menü fölé vittük az egeret az vagy 1-2 másodperc késéssel jelenítette meg az animációt az első alkalommal, illetve áttűnős diavetítést tartalmazó oldalakon az első alkalommal a képrenderelést (felülről lefelé) láttuk a képváltáshoz társított effektus helyett.

Az előnye viszont a csökkent adatforgalom és ennél fogva csökkent betöltési időn túl az volt, hogy CSS szabályokkal el lehetett rejteni a reklámokat, így bizonyos esetekben sokkal egyszerűbb volt a dolgunk, habár a megbízható tartalomblokkolás továbbra is az urlfilter.ini maradt.

Ezt a lehetőséget kezdetben (8.x verziók körül) még csak UserCSS-vel lehetett kihasználni, utána Lex1 készített egy hibrid megoldást, végül pedig a Local Storage bevezetésével megszületett a NoAds, először userJS, később kiegészítő formájában.

Azóta megjelent a sokkal hatékonyabb URL Filter API is és az arra épülő megoldások, mint az Opera Adblock De sajnos az URL Filter korlátai megmaradtak, vagyis a RegExp hiánya és a element alapú blokkolás hiánya.

Viszont itt jön képbe Dither, aki elkészítette a NoAds Advanced 1.2.1b-t, ami nem pótolja az elveszett display:none-t, de az URL Filter API-nak köszönhetően legalább egy részét visszakapjuk a korábbi lehetőségeinknek.

Változások, a NoAds óta:

  • URL Filter API támogatás a hatékonyabb Adblock Filterlista integrációért.
  • widgets storage-nak köszönhetően exportálási lehetőség
  • Átdolgozott beállítások
  • MagicFunction/MagicVariable alapú blokkolás

MagicFunction/MagicVariable példák:

##var GTracking
##var NO_msnads
##function poker_pp
##function print_download_ads
##function trackEvent 
##function trackPageView
##function trackPageViewCustom
##function wmx_counter
##function wmx_track
##function wtslog

A nap képe

Mi az ismerős a képen?

innovation

Tegyük jobbá az Operát!

A minap a hordozható változat friss telepítésnek szóló üdvözlőoldalát nézegettem (amiket amúgy sosem szoktam nézegetni). Elég komoly változáson ment keresztül pozitív irányba.

A diák végén találtam egy linket egy kérdőívre, ami sajnos csak angol nyelven elérhető, de azért belinkelem. A kitöltése mindössze 10 percet vesz igénybe (tehát nem túl hosszú) és leginkább 5-ös skálán kell osztályozni a funkciókat, meg ilyesmi.

Ha valamit nem értünk nyugodtan lehet kérdezni, de minél többen kitöltjük, annál reálisabb képet kapnak a fejlesztők a felhasználók igényeiről.

Ha rászánjuk magunkat, a kitöltést lehetőleg vegyük komolyan.

A kérdőív itt található

Automatikus képméretezés letiltásának 3 módja

Az Opera 11.10 bevezetett egy sokak által régóta hiányolt funkciót, amely átméretezi a képeket mind horizontálisan, mind vertikálisan, ha az nagyobb, mint a böngészőablak mérete. Ez a funkció kevesek által gyűlölt funkció is egyben, itt lehet szavazni, hogy opcionális legyen-e.

De most végre van 3 különböző lehetőségünk is kiiktatni ezt a viselkedést.

Kiegészítő

  1. Telepítsd az Image Autosizer kiegészítőt.
  2. O Menu > Extensions (Kiegészítők) > Manage Extensions (Kiegészítők kezelése) > Csavarkulcs ikon > Preferences (Tulajdonságok) > Advanced (Haladó) > View modes > When image is larger than window > Pipa az Enable default & Original mellé

Image Autosizer extension advanced options
Image Autosizer extension advanced options

Stíluslap

  1. Másold át a C:\Program Files\Opera\styles\image.css (Windows) vagy /usr/share/opera/styles/image.css (Linux) helyről a profile\styles helyre. Ez azért kell, hogy ne íródjon felül a következő frissítésnél (mint a Program Files tartalma).
  2. Nyisd meg a fájlt és szerkeszd bele a következő sort az aljára:
    /* Disable auto resizing of large images code starts here */
    *, *::before, *::after {
        position: static !important;
        height: inherit !important;
        width: inherit !important;
        cursor: default !important;
        padding: 0px !important;
        margin-left:auto;
        margin-right:auto;
    }
    /* Disable auto resizing of large images code ends here */
  3. Tallózd ki a módosított CSS útvonalát itt Image Style File és alul klikk a Mentés gombra.
  4. Indítsd újra az Operát.
Ez a módszer nem fogja középre igazítani a kis méretű képeket.

UserJS

Készítsd egy userJS-t (üres szöveges fájl, .js kiterjesztéssel), például NoImgAutoResize.js néven a következő kóddal:.

// ==UserScript==
// @description Disables auto resizing of large images
// @author Fartan
// ==/UserScript==

if(document.querySelector("head>link[rel='stylesheet'][href='opera:style/image.css']")) window.donotrun=true;

A megoldásokért köszönet [Bertalan Dávidnak & Fartannak a fórumból]

süti beállítások módosítása