[JavaScript] preventDefault() in Safari

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Interfico
  • Registratie: Augustus 2007
  • Laatst online: 07-09 19:59
De opdracht is om een javascript versie van de volgende photoviewer te maken:
http://www.simpleviewer.net/postcardviewer/app/

Een vereiste is dat met de linkermuisknop moet worden ingezoomd en dat met de rechtermuisknop afbeeldingen worden verwijderd.

Ik zit met het volgende stuk code:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        var eventHandler = function(e) {
            var rightclick;
            if (!e) var e = window.event;
            if (e.which) rightclick = (e.which == 3);
            else if (e.button) rightclick = (e.button == 2);
        
            if (rightclick) {
                EventUtil.preventDefault(e);
                remove(this);
            } else {
                zoom(this);
            }
        };

                EventUtil.addHandler(image, "mousedown", eventHandler);


EventUtil.preventDefault:

JavaScript:
1
2
3
4
5
6
7
    preventDefault: function(event) {
        if (event.preventDefault) {
            event.preventDefault();
        } else {
            event.returnValue = false;
        }
    }


Dit werkt prima in Firefox. Safari is helaas een heel ander verhaal. De functionaliteit is er, echter verschijnt telkens bij het indrukken van de rechtermuisknop ook het bekende menu.
Ik heb geen oplossing voor dit probleem kunnen vinden; help?

Acties:
  • 0 Henk 'm!

  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

Probeer de mouseup event.

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 12:54

Bosmonster

*zucht*

Vergeet niet dat je dit soort dingen kunt disablen in de browser. Veel mensen stellen het disablen van de rechtermuisknop-functie niet op prijs. Ik heb in Firefox bijvoorbeeld ingesteld dat mensen niet met mijn windows of rechtermuisknop-functie mogen rommelen.

Daarnaast is het uit interactie-oogpunt ook geen beste keuze om de rechtermuisknop als verwijderknop te hanteren.

Maar aangezien het een schoolopdracht is zo te zien zal je docent er wel niet al te veel om malen.

[ Voor 13% gewijzigd door Bosmonster op 21-09-2009 10:15 ]


Acties:
  • 0 Henk 'm!

  • Interfico
  • Registratie: Augustus 2007
  • Laatst online: 07-09 19:59
Een vereiste is dat met de linkermuisknop moet worden ingezoomd en dat met de rechtermuisknop afbeeldingen worden verwijderd.
@Bosmonster: ik ben het zelf ook sterk oneens met deze vereiste. Als het aan mij ligt wordt er in een webapplicatie enkel en alleen van de linkermuisknop gebruik gemaakt. Helaas zal dit toch echt moeten.

Het probleem is dan ook niet zozeer de angst dat mensen dit kunnen tegenwerken door vanalles aan hun browser te tweaken. Het probleem is dat ik preventDefault() gewoonweg niet aan het werk krijg in Safari. Ik hoop dat iemand hier een oplossing voor heeft.

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 12:54

Bosmonster

*zucht*

Interfico schreef op maandag 21 september 2009 @ 22:07:
[...]

Het probleem is dan ook niet zozeer de angst dat mensen dit kunnen tegenwerken door vanalles aan hun browser te tweaken. Het probleem is dat ik preventDefault() gewoonweg niet aan het werk krijg in Safari. Ik hoop dat iemand hier een oplossing voor heeft.
Dat is dus wel degelijk je probleem, want Safari (en ook Opera), staan simpelweg niet toe dat je het contextmenu disabled voor zover ik weet.

[ Voor 34% gewijzigd door Bosmonster op 21-09-2009 22:18 ]


Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 15:30
klinkt als een opdracht van de han :)
en als dat daadwerkelijk zo is hoef je het niet werkend te krijgen in safari toch? Alleen in ie en firefox?

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 12:54

Bosmonster

*zucht*

Caelorum schreef op maandag 21 september 2009 @ 22:34:
klinkt als een opdracht van de han :)
en als dat daadwerkelijk zo is hoef je het niet werkend te krijgen in safari toch? Alleen in ie en firefox?
Lekkere opdracht dan, daar bereid je de mensen wel mee voor op hun toekomstige werk :P

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 15:30
*offtopic* ach ze moedigen het wel aan om zoveel mogelijk browsers werkend te krijgen maar met die twee waren ze met mijn opdracht iig al wel tevreden :D

Acties:
  • 0 Henk 'm!

  • Interfico
  • Registratie: Augustus 2007
  • Laatst online: 07-09 19:59
Caelorum schreef op maandag 21 september 2009 @ 23:00:
*offtopic* ach ze moedigen het wel aan om zoveel mogelijk browsers werkend te krijgen maar met die twee waren ze met mijn opdracht iig al wel tevreden :D
Maar we weten allebei dat je dat voor een klant niet op die manier oplost. :P

Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
Bosmonster schreef op maandag 21 september 2009 @ 22:13:
[...]

Dat is dus wel degelijk je probleem, want Safari (en ook Opera), staan simpelweg niet toe dat je het contextmenu disabled voor zover ik weet.
Werkt inderdaad absoluut niet in Opera, maar zou wel in Safari moeten werken:

JavaScript:
1
2
3
4
5
6
$(document).bind("contextmenu", function(event)
{
  event.preventDefault();
  
  return false;
});


(Even snel met jQuery event binding syntax, want de hele DOM syntax uittikken heb ik geen zin in...)


Opera maakt gewoon willens en wetens een usability conflict omdat ze paranoide zijn dat iemand het context menu 'steelt' in een malicious script. Nou; dan maak je daarvoor toch een override toetscombinatie oid, zodat je toch het browser context menu krijgt?

Of zijn ze nou bang dat iemand een context menu maakt wat Opera's context menu nauwkeurig kloont, en daarmee een (veel te complex voor woorden, specifiek op Opera gericht) phising scenario opstart wat uitmondt in het opvragen van gebruikersgegevens zoals creditcard usw.? Kom nou zeg...

De mogelijkheid om het default context menu uit te wisselen voor een webapp-specifiek menu dan maar compleet te castreren is toch echt niet 'the way to go'.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
R4gnax schreef op dinsdag 22 september 2009 @ 11:12:
Of zijn ze nou bang dat iemand een context menu maakt wat Opera's context menu nauwkeurig kloont, en daarmee een (veel te complex voor woorden, specifiek op Opera gericht) phising scenario opstart wat uitmondt in het opvragen van gebruikersgegevens zoals creditcard usw.? Kom nou zeg...

De mogelijkheid om het default context menu uit te wisselen voor een webapp-specifiek menu dan maar compleet te castreren is toch echt niet 'the way to go'.
Ik vind dat een webpagina met z'n takken van m'n browser moet blijven. Als 'ie context-menu's er bij wil, prima (desnoods gemarkeerd of whatever) maar van de rest blijft 'ie maar mooi af.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Ik vind dat een webpagina met z'n takken van m'n browser moet blijven. Als 'ie context-menu's er bij wil, prima (desnoods gemarkeerd of whatever) maar van de rest blijft 'ie maar mooi af.
Volledig mee eens. Principekwestie. Jatten af!
Pagina: 1