Spotfire - javascript触发IronPython脚本在报告加载时执行

时间:2016-11-23 09:03:26

标签: javascript spotfire

我有以下的javascript代码,当我加载报告时它会触发IronPython脚本。

我唯一的问题是,由于某种原因我不知道它(它触发脚本)几次。

有人可以帮助我吗?下面是剧本:

var n=0;

$(function () {
 function executeScript() {
     if (n==0){
        n=n+1;
        now = new Date();
        if (now.getTime()-$('#hiddenBtn input').val()>10000){
            $('#hiddenBtn input').val(now.getTime());
            $('#hiddenBtn input').focus();
            $('#hiddenBtn input').blur();
        }
     }
 }
$(document).ready(function(){executeScript()}); 
strong text});

如果您需要更多信息,请告诉我们。 在此先感谢!!!

1 个答案:

答案 0 :(得分:1)

我在Javascript执行多次时遇到过类似的问题。 Spotfire似乎不止一次实例化JS,它可能会引起一些有趣的行为......

在我看来,最好的解决方案只有在用户通过链接(而不是浏览库)访问文档时才有效。传递配置块以设置具有当前时间戳的文档属性,该时间戳将执行您的IP脚本。这是最坚实的实施。

否则,您可以尝试这样的事情:

// get a reference to a container on the page with an ID "hidden"
var $hidden = $("#hiddenBtn input");

// only continue if the container is empty
if !($hidden.text()) {
    var now = Date.now();
    $hidden.text(now)
           .focus()
           .blur();
|}

这与您发布的代码基本相同,但不是依赖于var n,而是指望输入#hiddenBtn > input为空。有一点需要注意,在保存文档之前,您必须确保此字段为空

一个附加解决方案是使用数据函数来更新文档属性,如@ user1247722在其答案中所示:https://stackoverflow.com/a/40712635/4419423