【问题标题】:Xpages Link Open New Browser TabXpages 链接 打开新的浏览器选项卡
【发布时间】:2016-08-26 21:21:45
【问题描述】:

我在 stackoverflow 中发现了一些与此类似的问题,但没有完全匹配的问题。我正在尝试修改 Xpages 项目,其中搜索结果显示在动态视图面板中。搜索结果的第一列是在同一页面中打开记录的链接。我想要做的是让这个链接在单独的页面中打开记录。我认为这是视图的"Dynamic" 部分令人困惑,因为我可以看到没有"Column Name""Column View" 可以添加到window.open 或target="_blank" 中。请问我该怎么办?

XPage 的相关部分只有以下内容;

<xp:panel id="maincontentpanel">
    <xe:dynamicViewPanel rows="30" id="dynamicViewPanel1" width="100%">
      <xe:this.data>
         <xp:dominoView viewName="(keywordsUser)" var="view">
         </xp:dominoView>
      </xe:this.data>
   </xe:dynamicViewPanel>
</xp:panel>

在 HTML 中查看源代码时,可点击列显示以下内容;

<tr>
    <td class="xspColumnViewStart">
        <a id="view:_id1:cc4cconeuilayout:OneUIMainAreaCallback:dynamicViewPanel1:0:_id6:_internalColumnLink"
           href="*routetoourrecord*";action=editDocument"
           class="xspLinkViewColumn">2014</a>
    </td>

【问题讨论】:

    标签: xpages


    【解决方案1】:

    动态视图面板在所有属性中有一个属性“目标”,您可以在其中选择“_blank”。这应该将属性target="_blank" 添加到第一列的链接中。但是,不幸的是,这仅适用于 Notes 客户端

    所以,没有我们可以设置的属性。幸运的是,呈现的链接有一个自己的类“xspLinkViewColumn”(请参阅​​您的源 HTML 示例)。使用dojo.query,我们可以获取该类的所有元素,并在客户端添加目标属性。

    只需将以下事件代码添加到您的 XPage:

    <xp:eventHandler
        event="onClientLoad"
        submit="false">
        <xp:this.script><![CDATA[
             dojo.query(".xspLinkViewColumn").attr("target", "_blank");
        ]]></xp:this.script>
    </xp:eventHandler>
    

    所有链接都将通过这种方式获得属性target="_blank",文档将在新的浏览器选项卡中打开。

    【讨论】:

    • 请原谅我对 XPages 还是很陌生。您提到的“视图列链接”是动态视图面板的属性吗?如果是这样我就看不到了!
    • 我更新了我的答案,希望它更好理解。您只需将上面的代码添加到您的 Xpage 或自定义控件中,它就会起作用。
    • 再次感谢克努特。我将您提供的代码添加到 XPage 中,但它仍然没有在新的浏览器选项卡\窗口中打开记录。我尝试在动态视图面板的 XML 标记中添加代码,然后执行构建和清理,但没有区别。然后将代码移到 dynamicviewpanel 之外的 Xpage 顶部附近——再次构建和清理,但仍然相同。然后我尝试删除代码并在 XPage 的属性中,在“onClientLoad”事件中添加以下内容,dojo.query(".xspLinkViewColumn").attr("target", "_blank");但仍然没有工作。我做错了什么?
    • 您最后两种包含代码的方法是正确的,应该可以工作。请测试代码是否执行添加此警报:alert(dojo.query(".xspLinkViewColumn").length);
    • 等等!!!这是工作。我做了另一次清理,但这确保它包括清理项目的磁盘 AD 部分(因此它适用于 SVN),并且我还清除了浏览器缓存及其工作。非常感谢克努特。你很有帮助
    【解决方案2】:

    只是为了让您知道代码不适用于 Bootstrap 主题。

    你可以使用

    dojo.query('[id$="_internalColumnLink"]').attr("target", "_blank"); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-29
      相关资源
      最近更新 更多