复制代码 代码如下:
<!--菜单样式-->
<STYLE type=text/css>
.cMenu {
BORDER-RIGHT: #000000 1px solid;
BORDER-TOP: #000000 1px solid;
FONT-WEIGHT: normal;
FONT-SIZE: 14px;
VISIBILITY: hidden;
BORDER-LEFT: #000000 1px solid;
WIDTH: 150px;
CURSOR: default;
COLOR: #000000;
LINE-HEIGHT: 20px;
BORDER-BOTTOM: #000000 1px solid;
FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;
POSITION: absolute;
BACKGROUND-COLOR: #eeeeff
}
.menuitems {
PADDING-RIGHT: 5px;
PADDING-LEFT: 5px
}
</STYLE>
<DIV class=cMenu id="contextMenu" onmouseover=highLightMenu() onmouseout=lowLightMenu()>
<DIV class=menuitems clickcall="alert('查看历史执行情况');">查看历史执行情况</DIV>
<DIV class=menuitems clickcall="alert('查看批注');">查看批注</DIV>
<DIV class=menuitems clickcall="alert('插入/修改批注');">插入/修改批注</DIV>
<HR color=#aaaaaa size="0">
<DIV class=menuitems clickcall="alert('关于');">关于</DIV>
</DIV>
<SCRIPT type="text/javascript">
var contextMenu = document.getElementById("contextMenu");
function getObjectName()
{
return document.getElementById("cv.id").value;
}
function getRVContent()
{
var objName = getObjectName();
return eval("document.getElementById('RVContent" + objName + "');");
}
function overWriteRightClick()//重写弹出菜单
{
var objName = getObjectName();
eval("oCV" + objName + ".rvMainWnd.displayContextMenu = displayContextMenu;");
}
function disableRightClick()
{
var objName = getObjectName();
eval("oCV" + objName + ".bCanUseCognosViewerContextMenu = false;");
}
/* 菜单相关函数 start*/
function displayContextMenu(evt) {
evt = (evt) ? evt : ((event) ? event : null);
hideContextMenu();
var rightedge = getRVContent().clientWidth - evt.clientX;
var bottomedge = getRVContent().clientHeight - evt.clientY;
if (rightedge < contextMenu.offsetWidth)
contextMenu.style.left = getRVContent().scrollLeft + evt.clientX - contextMenu.offsetWidth - getRVContent().offsetLeft;
else
contextMenu.style.left = getRVContent().scrollLeft + evt.clientX - getRVContent().offsetLeft;
if (bottomedge < contextMenu.offsetHeight)
contextMenu.style.top = getRVContent().scrollTop + evt.clientY - contextMenu.offsetHeight - getRVContent().offsetTop;
else
contextMenu.style.top = getRVContent().scrollTop + evt.clientY - getRVContent().offsetTop;
contextMenu.style.visibility = "visible";
return false;
}
function hideContextMenu() {
var object = event.srcElement;
contextMenu.style.visibility = "hidden";
if (object.className == "menuitems") {
eval(object.clickcall);
}
}
function highLightMenu() {
var object = event.srcElement;
if (object.className == "menuitems") {
object.style.backgroundColor = "highlight";
object.style.color = "white";
}
}
function lowLightMenu() {
var object = event.srcElement;
if (object.className == "menuitems") {
object.style.backgroundColor = "";
object.style.color = "black";
}
}
/*菜单相关函数 end*/
overWriteRightClick();
document.body.onclick = hideContextMenu;
</SCRIPT>
下面我来着介绍一下这段代码,前面的style和div主要是定义菜单的现实样式,其中引用样式为menuitems的div中有个clickcall属性,这个属性就是当点击此菜单项时调用的JS函数,可以将其改为自己的函数,我这里只是简单的调用了个alert。
getObjectName函数中有个cv.id的对象,之前也有人问过这个问题,“cv.id”是干什么用的?cognos报表在ReportStudio运行生成的对象和用URL请求生成的对象名称是不一样的,但是有规律可循,比如利用ReportStudio运行生成的报表中CognosViewer的对象名为oCVRS,而用URL请求生成的cognosViewer对象名为oCV_NS_,大家可以查看两次运行结果的源文件来进行比较,就比较直观了。发现前缀都一样(oCV)只是后面“RS”和“_NS_”不同,页面中很多对象都是用的此规则,而cv.id存储到正是后缀。这样就可以拼凑出当前运行模式下的对象名了。
getRVContent函数获取的是id为RVContent_NS_或RVContentRS的DIV对象,RVContent是展现用ReportStudio定义报表的内容,不包含CognosViewer工具栏和标题栏。
overWriteRightClick函数是将cognos右键调用的函数改为自己定义的函数。
disableRightClick函数已经说过了,禁用右键菜单。
displayContextMenu、hideContextMenu、highLightMenu、lowLightMenu这几个函数都是和菜单操作先关的,可以根据实际要求进行改造。
效果图如下:
相关推荐:
为什么做抖音seo,为什么做抖音推广 ,描边ai虚线
AI批量文章工具,让写作变得高效与轻松,cs机器人ai
SEO在线服务-让您的网站快速跃升至搜索引擎前列,江西小红书营销推广案例
seo规范是什么意思,seo包括哪些内容 ,AI智能破解
为什么做酒店seo,为什么做酒店 ,ai uehara下载
ChatGPT无法加载?检查您的网络设置并尝试重启Chat,ai写作怎么写作文的
ChatGPT破解版电脑:如何获得更强大的AI助手,提升工作与学习效率,ai预设动画
ChatGPT4网页空白:重新定义智能交互的未来,怎么登ai
SEO获取流量的必杀技:如何通过优化轻松提升网站排名,德州全网营销推广价格
怎么用AI生成文章免费版,高效创作从此开始!
SEO优化的利器:提升网站排名的秘密武器,联想ai7g-3笔记本
丹东抖音seo是什么,抖音seo引流 ,ai工具编写作业指导书
为什么seo这么难,seo难嘛 ,ai宁中则
seo渠道优化是什么,seo渠道推广怎么做 ,ai121333
ChatGPT使用问题?如果您正在使用VPN,请尝试将其关闭,ai制作渐变立体
ChatGPT-深度学习与自然语言处理的革命性突破,金华ai视觉锁螺丝机
seo网站自学看什么书,seo技术适合自学吗 ,斑马ai阅读
ChatGPT页面空白无法登录?如何解决这一困扰?,温州ai字幕生成
SEO开发:数字营销的核心驱动力,园区网站建设
ChatGPT页面无法访问?解决方案,让你轻松摆脱困扰!,ai染发颜色
AI一键生成文章,写作新境界
ChatGPT无法加载?检查您的网络设置并尝试重启ChatGPT,助您畅享无障碍智能对话体验,ai记录人
什么是seo技术,什么是seo及seo的作用 ,AI倒放仓鼠
ChatGPT免费版下载:智能对话助手带来的全新体验,电脑怎么下载Ai微认证
seo适合看什么书,自学seo书籍推荐 ,ai少女 刻晴
SEO趋势:2025年搜索引擎优化的未来发展,河南省营销推广系统官网
文章AI思维导图自动生成助力创作的智慧之源
【BVIP尊享体验:超越奢华,开启专属未来】,珠宝网站建设思路
AI一键生成文章免费版:颠覆写作新体验
seo需要了解什么,seo需要学些什么内容 ,ovo ai
SEO在广告领域的深度解析:如何利用SEO提升广告效果,网文写作ai工具
SEO优化攻略:如何通过精准策略提升网站排名与流量,aI ow翻译
SEO是如何推动企业增长的关键力量,深圳罗湖网站建设设计
SEO舆情:如何通过有效的舆情管理提升企业品牌形象,seo推广外包提高收录
什么是seo如何进行seo,何谓seo ,红米的AI摄影什么意思
SEO地位:如何提升你的网站排名与曝光度,抢占市场先机,微营销网络推广
SEO如何做?全方位解析提升网站排名的秘诀,AI翻译好处
文章创作AI:引领智能写作的新时代
ChatGPT免费版每天提问有次数限制吗?揭秘如何高效使用AI助手!,机甲ai手绘
未来的效率利器AI软件下载AI,助您轻松驾驭智能世界
英语日记AI生成:轻松提升英语水平的智能助手
SEO短视:为何眼前的成效不能成为长久的策略?,网站上线seo优化
pbootcms自动翻译插件,让你的网站轻松实现多语言覆盖,ai 镀金
怎么用AI写文章:高效创作的秘诀
ChatGDP人工智能:未来科技赋能企业与个人的智能变革,如何用AI绘制人体
ChatGPT错误处理与异常情况解决方法:让你的AI助手更加智能与可靠,智能ai鼠标ai智能语音
SEO教你如何快速提升网站排名,打破竞争壁垒!,本溪seo优化排名公司
专业关键词助力SEO优化,让你的内容脱颖而出,东营响应式网站优化
SEO架构:提升网站流量的核心策略,东营南江全平台营销推广
AI助手不需要登陆-畅享便捷生活,随时随地高效工作,ai客服 对话