在 Cognos 10 中报告准备就绪时触发的可靠事件

Posted

技术标签:

【中文标题】在 Cognos 10 中报告准备就绪时触发的可靠事件【英文标题】:Reliable event that fires when report ready in Cognos 10 【发布时间】:2014-02-06 10:37:03 【问题描述】:

我有一些 Cognos 报告,其中包含需要在报告加载后立即运行的自定义 javascript 函数。我找不到在报告准备好时触发的事件,所以我只是在报告底部的html Items 中包含了函数调用。一旦加载了包含调用的脚本标签,就会调用这些函数。自定义函数使用 jQuery,所以我在导入 jQuery 的报告顶部有另一个 HTML Item

问题是有时函数在 jQuery 完成加载之前执行,导致错误。查看页面源码,我看到虽然保留了脚本标签的顺序,但它们都放在了页面的头部。没有什么可以阻止它们被并行加载,或者在报告完成加载之前执行。

我能想到的最佳解决方案是在报告完成加载后从某个事件触发函数调用。有没有人发现一个事件或一组事件可以在报告准备好时可靠地触发:

从提示页面加载后 关于从另一个报表钻取 什么时候点击了页面上的重新提示按钮?

JQuery 的文档就绪不会在任何这些情况下触发。 <body onload> 显然在 Cognos 8 中有效,但在 Cognos 10 中无效。

【问题讨论】:

【参考方案1】:

使用(文档).ready

见this example from IBM

<script type="text/javascript" 
  src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
<script type="text/javascript" 
  src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery-ui.min.js"></script>
<script type="text/javascript">
var j = jQuery.noConflict();
j(document).ready(function()

  j('.ShowHideList').hide();
  j('.ShowHideClicker').click(function()
  
    j(this).next().toggle();
  );
);
</script>

【讨论】:

谢谢,这行得通!我认为我缺少的关键是 jQuery 的导入和文档就绪函数需要在同一个 HTML Item 中,否则函数绑定可以在 jQuery 加载之前运行。 另一件让我感到困惑的事情是,我在一个单独的 .js 文件中包含了 var j = jQuery.noConflict(); 行,因为它在多个报告中使用。它有时会在 jQuery 加载之前执行。 我的极简主义程序员大喊“jQuery 导入只需要执行一次!!”。我感到欣慰的是,即使代码是多余的,解决方案也很简单。

以上是关于在 Cognos 10 中报告准备就绪时触发的可靠事件的主要内容,如果未能解决你的问题,请参考以下文章

cognos是啥?

window.orientation 在 onresize 中报告旧值

将 null 分配给类型化变量时,Visual Studio Code 在 Typescript 代码中报告错误

Helgrind 在简单的 boost::asio::thread_pool 程序中报告同步错误

Wicket 在后续请求中报告相同的 FileUpload 对象

仅在 Visual Studio 中报告 C 警告