Örvitinn

Blogggáttin löguð með Greasemonkey

Ég verð oft ansi pirraður á þeim fítus blogggáttarinnar að setja allar síður í umslag. M.ö.o. þegar þú smellir lá link á blogggáttinni endar þú ekki á síðunni sjálfri heldur síðu frá blogggáttinni sem birtir hina síðuna í ramma (iframe). Þegar þú smellir á vísanir á þeirri síðu breytist slóðin í browsernum ekki þar sem þú ert í raun enn á síðu blogggáttarinnar. Þegar þú smellir svo á link efst á síðunni til að losna úr umslaginu endar þú á fyrstu síðunni en ekki þeirri sem þú ert kominn á.

Markús, sá sem forritar blogggáttina, lét mig vita að þeir ætluðu að breyta þessu en það kæmi ekki út fyrr síðar í þessum mánuði eða í ágúst.*

Þannig að ég ákvað að prófa að fikta með Greasemonkey.

Ég skrifaði semsagt örlítið script sem virkar þannig að það áframsendir mann strax á síðuna sem ætlunin var að skoða. Þetta eru bara nokkrar línur sem ég setti saman útfrá leiðbeiningum á diveintogreasemonkey.


// ==UserScript==
// @name           Blogggáttinn
// @namespace      http://www.orvitinn.com
// @description    Lagar vísanir frá blogggáttinnni
// @include        http://blogg.gattin.net/blog.php*
// ==/UserScript== 
function xpath(query) { return document.evaluate(query, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); }
var allir_rammar = xpath('//iframe'); var rammi = allir_rammar.snapshotItem(0); if (rammi) { window.location.href = rammi.src; }
Það þarf ekkert að útskýra scriptið, það er það einfalt.

Til að installa scriptinu þurfið þið að hafa Greasemonkey uppsett, smellið svo á þennan link til að sækja javascript skrána. Þá poppar upp gluggi frá Greasemonkey, veljið install og þetta er komið.

Farið svo á blogggáttina og smellið á einhverja vísun og viti menn, þið endið á síðunni sjálfri.

Einn galli við þetta er að ekki dugar að gera "back" frá síðunni til að lenda aftur á blogggáttinni, því þú lendir aftur á wrapper síðunni frá þeim og ert því samstundis sendur aftur á síðuna sem þú varst að skoða. Þetta er svosem hægt að laga með því að skoða hvaðan fólk kemur (referer) og breyta hegðun eftir því hvort fólk kemur frá gáttinni eða síðunni sem er í rammanum. En ég nenni ekki að spá í því núna, það er auðvelt að hoppa aftur um tvær síður í firefox með því að ýta á litla þríhyrninginn hjá back takkanum.

Sama script er hægt að nota fyrir t.d. b2.is með því að breyta @include efst, bæta við línu því það mega vera margar @include línur: @include http://www.b2.is/?sida*

Greasemonkey er dálítið sniðugt dæmi.

*Þið þurfið semsagt ekkert að flýta ykkur að laga þetta mína vegna.

forritun
Athugasemdir

Már - 18/07/07 16:30 #

nettara og líklega hraðara:

var iframe = document.getElementsByTagName('iframe')[0];
if (iframe)
{
  window.location.replace(iframe.src);
}

Matti - 18/07/07 16:31 #

Það er alltaf til einfaldari leið :-)

Már - 18/07/07 16:31 #

...eða ef maður vill vera enn knappari:

var iframe = document.getElementsByTagName('iframe')[0];
iframe  &&  window.location.replace(iframe.src);

:-)

Matti - 18/07/07 16:34 #

Ég uppfærði scriptið sem ég linka á, nota nú nýrri útgáfu þína.

Ég þarf að grúska aðeins meira í javascript :-)

Eggert - 18/07/07 16:52 #

Mér þykir nú eiginlega hvorki svakalega fallegt né læsilegt að nota short-circuit evaluation fyrir flow control í hugbúnaði, þó svo það spari tvær línur... :)

Már - 18/07/07 17:01 #

...enda sagði ég "knappari" -- ekki "fallegri" eða "læsilegri". :-)

Erlendur - 18/07/07 17:02 #

Klöppum fyrir þessu

Matti - 18/07/07 17:03 #

Það hlýtur að vera hægt að minnka þetta ennþá meira :-)

xpath fallið tók ég beint af diveintogreasemonkey síðunni.

En það er rétt, maður á að forðast svona trix - þó maður fái stundum dálítið kikk út úr því að gera eitthvað þessu líkt.

Matti - 19/07/07 13:28 #

Þess má geta að núverandi script virkar líka á b2.