Xpages 打开链接时触发SSJS

Xpages 打开链接时触发SSJS,xpages,xpages-ssjs,Xpages,Xpages Ssjs,我有一个门户xpage,它有几个链接。当用户打开一个链接时,我想调用一些ssj来记录用户单击的链接 到目前为止,我试图通过链接的onclick事件来实现,但问题是window.open将被弹出窗口阻止程序阻止 有人知道如何做到这一点吗?您可以像往常一样运行SSJ。将CSJS代码添加到链接中事件处理程序的oncomplete属性中 <xp:link ....> .... <xp:eventHandler oncomplete="location.href='http://..

我有一个门户xpage,它有几个链接。当用户打开一个链接时,我想调用一些ssj来记录用户单击的链接

到目前为止,我试图通过链接的onclick事件来实现,但问题是window.open将被弹出窗口阻止程序阻止


有人知道如何做到这一点吗?

您可以像往常一样运行SSJ。将CSJS代码添加到链接中事件处理程序的
oncomplete
属性中

<xp:link ....>
....
  <xp:eventHandler oncomplete="location.href='http://...url...'">
  ... other stuff ...
  </xp:eventHandler>
</xp:link>

logClick()
函数在中定义,它只是抛出一个Ajax请求。如果您注意到,我们正在准备
log.xsp?nid=ID\u OF_ENTRY
中的url。是一个XAgent,它获取id数据并保存“clicked”事件。我们在本例中使用了缓存bean,但是您可以在XAgent中运行任何SSJS或Java。它不需要返回数据。在这里,您还可以使用RPC组件。

我想我知道了。它也可能通过异步调用得到修复,但也可以正常工作

创建链接并在单击事件时添加客户端。以1秒的延迟触发按钮的点击。网页打开,SSJS随后启动。见所附示例:



但我想在新选项卡中打开链接。在这种情况下,你有两个选择。首先,您将创建一个中间页面,一个XAgent样式的页面,记录单击的页面并将用户重定向到所需的页面。其次,当用户导航到新选项卡上的另一个页面时,可以使用RPC组件异步提交“page clicked”事件。我们已经在Collaboration上实现了第二种方法今天,我将用链接更新答案。更新了答案。很抱歉我的错误,我再次查看了代码,我们在CT中没有使用RPC组件。但这也是我们方法的另一种选择。创建中间页是没有选择的,因为notes链接不应该在新选项卡中打开。只有网络链接才可以。然后,中间页将覆盖现有的Portal,而不使用中间页。:)更新后的答案不是中间页示例。
<xp:link 
    value="#{javascript:compositeData.link}"
    text="#{javascript:compositeData.title}"
    target="_blank" 
    id="link6">
    <xp:eventHandler event="onclick" submit="false">
        <xp:this.script><![CDATA[
            var baseUrl = "#{javascript:var baseUrl = context.getUrl().toString();baseUrl = baseUrl.substring(0, baseUrl.indexOf('.nsf')+4);baseUrl }";
            var url = baseUrl + "/log.xsp?" + "nid=" + "#{javascript:compositeData.nID}";                       
            logClick(url);      
        ]]></xp:this.script>
    </xp:eventHandler>
</xp:link>