contextmenu

Status
Niet open voor verdere reacties.

RMS123

Gebruiker
Lid geworden
15 nov 2009
Berichten
873
Hallo,

Ik heb een aantal dagen een geweldig context menu van internet geplukt:
https://github.com/joewalnes/jquery-simple-context-menu
Nu heb ik dit context menu helemaal in mijn cms verwerkt en dan blijkt dat die niet in internet explorer werkt (ik debug altijd in chrome)

Nu ben ik niet echt goed met JS dus kan iemand mij uitleggen waarom dit script niet werkt, en of dat nog te doen is om dat in te bouwen?

Alvast bedankt!

EDIT:

IE zegt:
error in:
[JS]settings.items.forEach(function(item) {
if (item) {
var rowCode = '<li><a href="#"><span></span></a></li>';
// if(item.icon)
// rowCode += '<img>';
// rowCode += '<span></span></a></li>';
var row = $(rowCode).appendTo(menu);
if(item.icon){
var icon = $('<img>');
icon.attr('src', item.icon);
icon.insertBefore(row.find('span'));
}
row.find('span').text(item.label);
if (item.action) {
row.find('a').click(function(){ item.action(e); });
}
} else {
$('<li class="' + settings.seperatorClass + '"></li>').appendTo(menu);
}
})[/JS]

en fout:
Code:
Regel: 46
Fout: Deze eigenschap of methode wordt niet ondersteund door dit object
 
Laatst bewerkt:
... een geweldig context menu ...
Hoei! Dat valt tegen... :confused:
De demo geeft bij mij als resultaat:
  • Alleen Chrome en Safari geven het mooie contextmenu.
  • Firefox (3.6.18) en Opera (11.50) laten wel het menu zelf zien, maar niet de header ervan.
  • IE7 laat helemaal het contextmenu niet zien, maar geeft het gewone ct-menu.

mypopupmenu.png

Dus ik ben bang dat het niet zozeer aan jouw js-vaardigheden ligt, maar meer aan het ding zelf.
En terzijde, maar ook niet helemaal:
  • In sommige browsers (bv. Opera) kunnen bezoekers het gebruik van eigen contextmenus door websites uitgeschakeld hebben staan.
  • Textbrowsers kennen geen javascript (de Googlebot ook niet), bezoekers kunnen voor de veiligheid javascript uit hebben staan.
  • Kortom: een gegarandeerde vertoning is er niet, ook niet als het goed zou werken.
Al met al zou ik overwegen toch maar af te zien van zo'n eigen contextmenu, en te kijken of je dezelfde functionaliteit op een andere manier kunt bereiken.

Met vriendelijke groet,
CSShunter
_____________
En tip voor de volgende keer: altijd eerst de demo uittesten in verschillende browsers(versies), voordat je tijd en moeite gaat stoppen in het implementeren van een gevonden voorwerp. ;)
 
Laatst bewerkt:
Ik heb uiteindelijk besloten het hele ding zelf te maken.
ik zit echter nog met 2 probleempjes:
1. Zoals je weet werkt e.pageY niet in IE, dan wordt verwacht dat event.clientY gebruikt wordt. Alleen hoe wissel je dat? want het volgende werkt blijkbaar niet:
Code:
if (IE) { // dat if IE zal dus iets anders moeten zijn.... maar wat?
tempX = event.clientX + document.body.scrollLeft;
tempY = event.clientY + document.body.scrollTop;
} else {
tempX = e.pageX;
tempY = e.pageY;
}

En als tweede:
ik denk dat het een domme newbie vraag is maar ik kom er toch niet helemaal uit. Om mijn functie te gebruiken staat er onder de onmouseup een even namelijk: contextmenucast(); omdat ik echter verschillende context menu's wil maken wil ik daaraan een variabele toevoegen, normaal wordt dat dus contextmenucast(menutoshow); maar dat werkt niet omdat er de functie in het script staat met : function contextmenucast(e) { Met die "e" dus, maar waar kan dan mijn variable komen?


EDIT:
all solved... thnx for help
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan