我正在使用一个短函数来检查XSP._isDirty,它可以在浏览器和旧版本的XPinC中正常工作。当我将代码直接放到自定义控件上的链接中作为客户端脚本时,它会运行,所以这并不是说_isDirty不再工作。
在9.0.1版本的XPinC中,单击调用该函数的链接不会执行,并会向状态栏报告未定义isClean。
我的函数在我的clientSideFunctions.js脚本库中,并通过主题加载。下面是加载过程:
<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;
}
}该函数是作为链接的客户端脚本调用的,因此我可以检查用户是否弄脏了页面。当使用这些链接时,enableModifiedFlag不会产生漂亮的小警告对话框,而是执行javascript。
<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>那么,如果代码将被执行,并且脚本库被加载到主题中,为什么它总是抛出错误呢?我做错了什么?
发布于 2014-04-26 02:30:23
它真的加载了吗?
<script target="xsp" src="/clientSideFunctions.js" clientSide="true" type="text/javascript"></script> 看起来您正在尝试使用输出脚本,但您正在使用HTML标记脚本
因此,/clientSideFunctions.js将尝试相对于server.com/clientSideFunctions.js加载库,而不是相对于数据库。
也许可以用这个来代替?
<xp:this.resources>
<xp:script src="/clientSideFunctions.js" clientSide="true"></xp:script>
</xp:this.resources>https://stackoverflow.com/questions/23298365
复制相似问题