view.postscript()是否允许您调用作为输出脚本加载的函数?

时间:2013-08-23 17:40:23

标签: xpages

我使用<xpScriptBlock>来存储加载ExtJS网格的两个相当长的客户端函数的内容。我可以使用clientide javascript调用该函数。

我发现我需要根据下划线文档中的条件显示不同的网格。为了引用后端,我将代码移到了服务器端,然后尝试使用view.postScript调用网格。这不起作用,是我的问题的基础。

这种方法是否可行?我不希望将所有代码都放入事件中。这些函数很长,最好保存在脚本块中,以提高可读性和可维护性。这些函数肯定是在客户端加载的,因为我可以使用firebug控制台手动加载它们。也许我错过了一些简单的东西,所以在改变方法之前我想问一下。

var typePO = document1.getItemValueString("typePO");
if(typePO == "AFS"){
    view.postScript("loadGridAFS();")
} else {
    view.postScript("loadGridOther();")
}

此代码位于面板的serverside onClientLoad事件中。我尝试添加'return'关键字,它没有任何区别。

更新:我甚至无法使用view.postscript()获得简单的警报。此方法仅适用于SSJS中的某些类型的事件吗?

1 个答案:

答案 0 :(得分:1)

在使用简单警报进行一些实验后,我可以说view.postScript()无处不在。

对于测试,我将相同的代码放在xpage的六个事件中。以下是我使用的代码示例:view.postScript(“alert('onClientLoad');”);我刚刚更改了消息以匹配事件。

结果如下:

  1. onClientLoad = nothing
  2. beforePageLoad = XSP错误
  3. afterPageLoad = WORKS!
  4. afterRestoreView = nothing
  5. beforeRenderResponse = WORKS!
  6. afterRenderResponse = nothing
  7. 我没有尝试过所有可用的事件,但这里的底线是你不应指望view.postscript()到处工作。如果它什么都不做,请首先尝试一个简单的警报,看看事件是否支持view.postscript,然后再询问您试图运行的客户端javascript代码。