在 Microstrategy 中触发上下文菜单点击 + Javascript

Triggering a context menu click in Microstrategy + Javascript

我目前在 Microstrategy 工作,这是一个 BI 工具平台,我正在尝试从上下文菜单中进行自动点击。出于某种原因,我无法使用代码自动触发点击。我希望我能得到帮助来计算 "this" 的值,这样我就可以通过它。最终目标是通过任何 grid_K47 被删除和页面刷新。下面点击 menuClick in real life 强制页面刷新,这是我想要它做的。

这是我知道的。

右击前的对象在table中,显示这个。请记住,这是所有 MSTR 呈现的代码。

这是我右击的地方

<td id="grid_K47_0_1_1_1" class="c4_K47" dpt="1" dg="TRUE" ds="Area" oid="4216C7074826CF50BC81B8BDEFB99603" style="cursor: pointer; opacity: 0.5;" frmid="CCFBE2A5EADB4F50941FB879CCF1721C" title="Area. Drag object to perform pivot. Right-click for more options" frmlist="ID45C11FA478E745FEA08D781CEA190FE520DESCCCFBE2A5EADB4F50941FB879CCF1721C1-1" or="V" sty="ATT" fe="h1;4216C7074826CF50BC81B8BDEFB99603;UK & Ireland" ax="1" frmname="DESC" oty="12" mx="1" cx="[11,15,16,17,18,19,20,4,26,4,4,29,30,31,32,33,36,37,38]">Area</td>

然后上下文菜单拉起并有这个部分

<tr id="cm1r10" height="18" style="cursor: pointer;" li="var bone = microstrategy.findBone(microstrategy.activeCXMenu); bone.processContextMenus('x');;" onclick="menuClick(this, 'grid_K47_0_GM1');" onmouseout="menuOff(this);" onmouseover="clearTimeout(oSubCTimer); menuOn(this); hideContextSubMenus(1);" ac="true" class="menu-row">

到目前为止,我已经测试了 menuclick 函数中 "this" 的不同值。这是我的最新作品

HTML

<div style="background-color:#E1E1E1;"> <input type="button" name="RemoveGrid"  id="RemoveGrid" value="Submit" ></div>

Javascript

<script>

$(document).ready(function() {
$("#RemoveGrid").on("click", function (e) {

RemoveGridjs();

});
});
</script>
<script>
function RemoveGridjs() {
var bone = microstrategy.findBone(microstrategy.activeCXMenu); 
bone.processContextMenus('x');;
menuClick('#grid_K47_0_1_1_1', 'grid_K47_0_GM1');
}
</script>

我为 MicroStrategy 做了一些 JavaScript 定制,弄清楚如何做事真是一场噩梦。作为公司的 MicroStrategy 不支持 JavaScript 自定义,因此没有相关文档,而且在网上也找不到太多。

我不确定您使用的是哪个版本的 MicroStrategy 和哪个可视化(交互式工作方式不同于快速模式),无论如何我的建议是修改 onclick 以记录 this 这样您就可以拥有关于这个对象的想法是。

类似的东西:

jQuery('#cm1r10').click(
  function(){
              console.log(this)
  }
);

另一种解决问题的方法是不要尝试 运行 关联到菜单项的功能,而是模拟按钮点击它。

jQuery("#RemoveGrid").on("click", 
                         function (e) {
                                jQuery('#cm1r10').trigger('click');
                         }
);

不确定如果上下文菜单未显示在屏幕上是否有效,但我认为值得一试。

无论如何,我建议您在自定义其他代码时使用 jQuery 而不是 $