3.2.0

My context menus no longer work with 2.5.1

I built a context menu (right Click menu) for rows in a grid using the previous version. With 2.5.1 it no longer works correctly. I get the browsers copy/past menu and my context menu. How do you turn off the browsers menu?
Jon
June 4,
obj.setEvent("oncontextmenu", "return false");
Alex (ActiveWidgets)
June 5,
This seems to only work for IE. Is there a fix for Firefox?

Thanks!
Jon
June 9,
The only way it works in FireFox is by using ctrl+right click. Any help would be greatly appreciated.

Thanks
Jon
June 9,
Sorry, I don't understand you - this code cancels native right click menu in both IE and Firefox. Are you saying that you still see browser right click menu in Firefox after adding this code?
Alex (ActiveWidgets)
June 9,
It works correctly in IE....It cancels the native menu and shows my custom menu. In FireFox is cancels both menus.

I'm basically using the example found here:

http://www.activewidgets.com/javascript.forum.12947.7/how-to-properly-set-oncontextmenu.html
Jon
June 9,
I figured out the problem

This little line of code causes the problem in FireFox.

document.onselectstart = new Function("return (false)");
Jon
June 9,
Well I thought it was fixed but there seems to be a bug when using firefox. Right click only works intermittently. Very strange. It's not a cache problem as it happens whether I clear it or not. I tested this using your example for basic grid.

<html>
<head>
<title>ActiveWidgets Grid :: Examples</title>
<style>body {font: 12px Tahoma}</style>

<!-- ActiveWidgets stylesheet and scripts -->
<link href="../../runtime/styles/system/aw.css" rel="stylesheet" type="text/css" ></link>
<script src="../../runtime/lib/aw.js"></script>

<!-- grid format -->
<style>
#myGrid {height: 200px; width: 500px;}
#myGrid .aw-row-selector {text-align: center}

#myGrid .aw-column-0 {width: 80px;}
#myGrid .aw-column-1 {width: 200px;}
#myGrid .aw-column-2 {text-align: right;}
#myGrid .aw-column-3 {text-align: right;}
#myGrid .aw-column-4 {text-align: right;}

#myGrid .aw-grid-cell {border-right: 1px solid threedlightshadow;}
#myGrid .aw-grid-row {border-bottom: 1px solid threedlightshadow;}

/* box model fix for strict doctypes, safari */
.aw-strict #myGrid .aw-grid-cell {padding-right: 3px;}
.aw-strict #myGrid .aw-grid-row {padding-bottom: 3px;}

</style>

<!-- grid data -->
<script>
var myData = [
["MSFT","Microsoft Corporation", "314,571.156", "32,187.000", "55000"],
["ORCL", "Oracle Corporation", "62,615.266", "9,519.000", "40650"],
["SAP", "SAP AG (ADR)", "40,986.328", "8,296.420", "28961"],
["CA", "Computer Associates Inter", "15,606.335", "3,164.000", "16000"],
["ERTS", "Electronic Arts Inc.", "14,490.895", "2,503.727", "4000"],
["SFTBF", "Softbank Corp. (ADR)", "14,485.840", ".000", "6865"],
["VRTS", "Veritas Software Corp.", "14,444.272", "1,578.658", "5647"],
["SYMC", "Symantec Corporation", "9,932.483", "1,482.029", "4300"],
["INFY", "Infosys Technologies Ltd.", "9,763.851", "830.748", "15400"],
["INTU", "Intuit Inc.", "9,702.477", "1,650.743", "6700"],
["ADBE", "Adobe Systems Incorporate", "9,533.050", "1,230.817", "3341"],
["PSFT", "PeopleSoft, Inc.", "8,246.467", "1,941.167", "8180"],
["SEBL", "Siebel Systems, Inc.", "5,434.649", "1,417.952", "5909"],
["BEAS", "BEA Systems, Inc.", "5,111.813", "965.694", "3063"],
["SNPS", "Synopsys, Inc.", "4,482.535", "1,169.786", "4254"],
["CHKP", "Check Point Software Tech", "4,396.853", "424.769", "1203"],
["MERQ", "Mercury Interactive Corp.", "4,325.488", "444.063", "1822"],
["DOX", "Amdocs Limited", "4,288.017", "1,427.088", "9400"],
["CTXS", "Citrix Systems, Inc.", "3,946.485", "554.222", "1670"],
["KNM", "Konami Corporation (ADR)", "3,710.784", ".000", "4313"]
];

var myColumns = [
"Ticker", "Company Name", "Market Cap.", "$ Sales", "Employees"
];
</script>
</head>
<body>
<script>

// create ActiveWidgets Grid javascript object
var obj = new AW.UI.Grid;
obj.setId("myGrid");

// define data formats
var str = new AW.Formats.String;
var num = new AW.Formats.Number;

obj.setCellFormat([str, str, num, num, num]);

// provide cells and headers text
obj.setCellText(myData);
obj.setHeaderText(myColumns);

// set number of rows/columns
obj.setRowCount(20);
obj.setColumnCount(5);

// enable row selectors
obj.setSelectorVisible(true);
obj.setSelectorText(function(i){return this.getRowPosition(i)+1});

// set headers width/height
obj.setSelectorWidth(28);
obj.setHeaderHeight(20);

// set row selection
obj.setSelectionMode("single-row");

obj.setEvent("oncontextmenu","return false");

// html event handler translates to grid events
function raiseMenuEvent(event){
this.raiseEvent("onRowContextMenu", event, this.$0);
}

// assign html event handler to row template
obj.getRowTemplate().setEvent("oncontextmenu", raiseMenuEvent);


// assign grid event handler
obj.onRowContextMenu = function(event, row){
alert("row=" + row + " x=" + event.clientX + " y=" + event.clientY);
}

// set click action handler
obj.onCellClicked = function(event, col, row){window.status = this.getCellText(col, row)};

// write grid html to the page
document.write(obj);

</script>
</body>
</html>
Jon
June 10,
Did you get a chance to look at this?
Jon
June 18,
i am having a similar problem in FF, the first fix worked for the grid but the header now acts like left click and tries to sort instead of a right click for the context menu.

It works great in IE and safari.
Ryan Garabedian
June 19,
Apparently the problem in FF was related to 'copypaste' controller which you can disable with this code -

obj.setController("copypaste", {});
Alex (ActiveWidgets)
June 25,

This topic is archived.

See also:


Back to support forum