我使用短函数检查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>
因此,如果代码将执行并且主题中加载了脚本库,为什么它会继续抛出错误?我做错了什么?
答案 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>