|
- /**
- *
- * @version $Id: context_menu.js 1 22:28 2010年7月20日Z tianya $
- * @package DedeBIZ.Administrator
- * @copyright Copyright (c) 2022, DedeBIZ.COM
- * @license https://www.dedebiz.com/license
- * @link https://www.dedebiz.com
- */
-
- var MenuWidth = 120;
- var ItemHeight = 16;
- var ItemNumber = 0;
-
- function curNav() {
- if (window.navigator.userAgent.indexOf("MSIE") >= 1) return 'IE';
- else if (window.navigator.userAgent.indexOf("Firefox") >= 1) return 'FF';
- else return 'OT';
- }
-
- function insertHtm(op, code, isStart) {
- if (curNav() == 'IE') {
- op.insertAdjacentHTML(isStart ? "beforeEnd" : "afterEnd", code);
- } else {
- var range = op.ownerDocument.createRange();
- range.setStartBefore(op);
- var fragment = range.createContextualFragment(code);
- if (isStart) op.insertBefore(fragment, op.firstChild);
- else op.appendChild(fragment);
- }
- }
-
- ContextMenu.WebFX_PopUp = null;
- ContextMenu.WbFX_PopUpcss = null;
-
- ContextMenu.intializeContextMenu = function () {
- insertHtm(document.body, '<iframe src="#" scrolling="no" class="WebFX-ContextMenu" marginwidth="0" marginheight="0" frameborder="0" style="position:absolute;display:none;z-index:50000000;" id="WebFX_PopUp"></iframe>', true);
-
- if (curNav() == 'IE') WebFX_PopUp = document.frames['WebFX_PopUp'];
- else WebFX_PopUp = document.getElementById('WebFX_PopUp');
-
- WebFX_PopUpcss = document.getElementById('WebFX_PopUp');
-
- WebFX_PopUpcss.onfocus = function () { WebFX_PopUpcss.style.display = "inline" };
- WebFX_PopUpcss.onblur = function () { WebFX_PopUpcss.style.display = "none" };
-
- if (curNav() == 'IE') document.body.attachEvent("onmousedown", function () { WebFX_PopUpcss.style.display = "none" });
- else document.addEventListener("onblur", function () { WebFX_PopUpcss.style.display = "none" }, false);
-
- if (curNav() == 'IE') document.attachEvent("onblur", function () { WebFX_PopUpcss.style.display = "none" });
- else document.addEventListener("onblur", function () { WebFX_PopUpcss.style.display = "none" }, false);
-
- }
-
-
- function ContextSeperator() { }
-
- function ContextMenu() { }
-
- ContextMenu.showPopup = function (x, y) {
- WebFX_PopUpcss.style.display = "block"
- }
-
- ContextMenu.display = function (evt, popupoptions) {
- var eobj, x, y;
-
- eobj = evt ? evt : (window.event ? window.event : null);
-
- if (curNav() == 'IE') {
- x = eobj.x; y = eobj.y
- } else {
- x = eobj.pageX; y = eobj.pageY;
- }
-
- ContextMenu.populatePopup(popupoptions, window)
- ContextMenu.showPopup(x, y);
- ContextMenu.fixSize();
- ContextMenu.fixPos(x, y);
- eobj.cancelBubble = true;
- eobj.returnValue = false;
- }
-
- //TODO
- ContextMenu.getScrollTop = function () {
- return document.body.scrollTop;
- //window.pageXOffset and window.pageYOffset for moz
- }
-
- ContextMenu.getScrollLeft = function () {
- return document.body.scrollLeft;
- }
-
-
- ContextMenu.fixPos = function (x, y) {
- /*var docheight,docwidth,dh,dw;
- if(!x) { x=0; y=0; }
- docheight = document.body.clientHeight;
- docwidth = document.body.clientWidth;
- dh = (WebFX_PopUpcss.offsetHeight+y) - docheight;
- dw = (WebFX_PopUpcss.offsetWidth+x) - docwidth;
- if(dw>0){
- WebFX_PopUpcss.style.left = (x - dw) + ContextMenu.getScrollLeft() + "px";
- }else {
- WebFX_PopUpcss.style.left = x + ContextMenu.getScrollLeft();
- } if(dh>0) {
- WebFX_PopUpcss.style.top = (y - dh) + ContextMenu.getScrollTop() + "px"
- }else{
- WebFX_PopUpcss.style.top = y + ContextMenu.getScrollTop(); }*/
- WebFX_PopUpcss.style.top = y + "px";
- WebFX_PopUpcss.style.left = x + "px";
- }
-
- ContextMenu.fixSize = function () {
- WebFX_PopUpcss.style.height = (ItemHeight * ItemNember + 20) + "px";
- WebFX_PopUpcss.style.width = MenuWidth + "px";
- ItemNember = 0;
- }
-
- ContextMenu.populatePopup = function (arr, win) {
- var alen, i, tmpobj, doc, height, htmstr;
- alen = arr.length;
- ItemNember = alen;
-
- if (curNav() == 'IE') doc = WebFX_PopUp.document;
- else doc = WebFX_PopUp.contentWindow.document;
-
- doc.body.innerHTML = '';
- //if (doc.getElementsByTagName("LINK").length == 0){
- doc.open();
- doc.write('<html><head><link rel="StyleSheet" type="text/css" href="js/contextmenu.css"></head><body></body></html>');
- doc.close();
- //}
- for (i = 0; i < alen; i++) {
- if (arr[i].constructor == ContextItem) {
- tmpobj = doc.createElement("DIV");
- tmpobj.noWrap = true;
- tmpobj.className = "WebFX-ContextMenu-Item";
- if (arr[i].disabled) {
- htmstr = '<span class="WebFX-ContextMenu-DisabledContainer">'
- htmstr += arr[i].text + '</span>'
- tmpobj.innerHTML = htmstr
- tmpobj.className = "WebFX-ContextMenu-Disabled";
- tmpobj.onmouseover = function () { this.className = "WebFX-ContextMenu-Disabled-Over" }
- tmpobj.onmouseout = function () { this.className = "WebFX-ContextMenu-Disabled" }
- } else {
- tmpobj.innerHTML = arr[i].text;
- tmpobj.onclick = (function (f) {
- return function () {
- win.WebFX_PopUpcss.style.display = 'none'
- if (typeof (f) == "function") { f(); }
- };
- })(arr[i].action);
-
- tmpobj.onmouseover = function () { this.className = "WebFX-ContextMenu-Over" }
- tmpobj.onmouseout = function () { this.className = "WebFX-ContextMenu-Item" }
- }
- doc.body.appendChild(tmpobj);
- } else {
- doc.body.appendChild(doc.createElement("DIV")).className = "WebFX-ContextMenu-Separator";
- }
- }
- doc.body.className = "WebFX-ContextMenu-Body";
- doc.body.onselectstart = function () { return false; }
- }
-
- function ContextItem(str, fnc, disabled) {
- this.text = str;
- this.action = fnc;
- this.disabled = disabled || false;
- }
|