功能未在XPinC中定义

时间:2014-04-25 16:26:23

标签: javascript xpages

我使用短函数检查XSP._isDirty,它可以在浏览器和旧版XPinC中正常运行。当我将代码直接放入自定义控件的链接作为客户端脚本时,它会运行,因此_isDirty不再起作用。

在带有9.0.1的XPinC中,单击调用该函数的链接不会执行并抱怨未定义isClean的状态栏。

我的函数在我的clientSideFunctions.js CSJS脚本库中并通过主题加载。这是加载:

<script target="xsp" src="/clientSideFunctions.js" clientSide="true" type="text/javascript"></script>   

这适用于8.5.3 XPinC和浏览器。

function isClean() {
    try {
        if (XSP._isDirty()){
            if (confirm ("Are you sure you want to navigate away from this page?" + "\n" +
                    "This document may contain unsaved changes." + "\n" +
                    "Press OK to continue, or Cancel to stay on the current page.")){
                return true;
            } else {
                return false;
            }
        } else {
            return true;
        }
    } catch (e) {
        return true;
    }
}

该函数被调用为链接的客户端脚本,因此我可以检查用户是否弄脏了页面。当使用这些执行javascript而不仅仅是链接的链接时,enableModifiedFlag不会产生漂亮的小警告对话框。

<xp:link text="Excel reporting" escape="true" target="_self" id="link11" value="/util_ExcelReport.xsp">
    <xp:this.styleClass><![CDATA[#{javascript:if (compositeData.currentSubLink == "imp_ExcelExports") "selected"}]]></xp:this.styleClass>
    <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
        <xp:this.script><![CDATA[return isClean();]]></xp:this.script>
    </xp:eventHandler>
</xp:link>

因此,如果代码将执行并且主题中加载了脚本库,为什么它会继续抛出错误?我做错了什么?

1 个答案:

答案 0 :(得分:1)

真的装了吗?

<script target="xsp" src="/clientSideFunctions.js" clientSide="true" type="text/javascript"></script>   

看起来您正在尝试使用输出脚本,但您使用的是HTML标记SCRIPT

所以/clientSideFunctions.js将尝试相对于server.com/clientSideFunctions.js加载库而不是相对于数据库。

可能会使用它吗?

<xp:this.resources>
    <xp:script src="/clientSideFunctions.js" clientSide="true"></xp:script>
</xp:this.resources>