Hem Flashspel Övrigt Blogg Gästbok 

Hur man får onDblClick på text att fungera i Opera

2008-03-01 21:20  Webben
Förut satt jag försökte få ett onDblClick-attribut att fungera i Opera. Problemet var att Opera automatiskt visar en meny när man dubbelklickar på ord. Opera helt ignorerade vad som stog i onDblClick. Problemet uppstår alltså bara när man dubbelklickar på ord och inte på tomma ytor.

Bara för att visa på problemet så har vi här ett exempel där ett popuppfönster med texten "hej!" kommer fram när man dubbelklickar på texten.

HTML-kod:
<div onDblClick="alert('hej!');">Dubbelklicka här!</div>

Exempel:
Dubbelklicka här!

I Opera kommer inte popuppfönstret komma fram eftersom det istället visas en fin meny istället.

För att lösa problemet kom jag efter ett tag på att om man på något sätt stör själva markeringen på något sätt så kanske man kan få Opera att låta bli att visa sin meny. Jag la till ett onClick-attribut som anropar focus() på sig själv. Resultatet blir att varje gång man klickar på något innanför taggen så ändras focus till taggen eller hur man ska förklara det. Detta resulterar i sin tur i att Opera inte visar menyn utan istället körs onDblClick-koden som den ska och popuppfönstret visas.

HTML-kod:
<div onClick="this.focus();" onDblClick="alert('hej!');">Dubbelklicka här!</div>

Exempel:
Dubbelklicka här!

Denna teknik kan även användas för att få hela textstycken att inte visa dubbelklicksmenyn i Opera om man nu skulle vilja detta. Man utelämnar då naturligtvis onDblClick-attributet. Allt detta kommer också till ett pris. Om man markerar texten i Firefox kommer texten bli avmarkerad. Kan vara bra att veta men inte alls säkert att det spelar någon roll i alla lägen. Detta testet är utfört på Opera version 9.26 så jag har ingen aning om hur detta fungerar i andra versioner.

2 kommentarer:
Erik A 2008-03-27 15:57
Annars kan du skriva: HTML: <div id="mitt-element">Lorem ipsum dolar sit</div> Javascript: document.getElementById("mitt-element").ondblclick= function() { alert("Riktig kod är bra kod!"); return false; // Detta, avbryter det som ska hända egentligen }; Och sen ska attribut alltid vara med små bokstäver.

Peter 2008-03-27 19:36
Erik, om det du försöker säga är att det räcker med att skriva return false så fungerar det inte. ondblclick körs inte överhuvudtaget i Opera när man dubbelklickar på texten. Det är precis som om det är en funktion som körs när man dubbelklickar och blockar ondblclick. Alltså måste man förhindra den funktionen från att köras. Jag tror tyvärr man får göra som jag har skrivit ovan för att det ska fungera.

Lämna en kommentar
namn
blogg/hemsida

Peter