브라우저와 XPinC의 이전 버전에서 제대로 작동하는 XSP._isDirty를 확인하는 간단한 함수를 사용하고 있습니다. 코드를 직접 클라이언트 측 스크립트로 사용자 정의 컨트롤의 링크에 넣으면 실행되므로 _isDirty가 더 이상 작동하지 않습니다.XPinC에서 정의되지 않은 함수
XPinC 9.0.1에서는 함수를 호출하는 링크를 클릭해도 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;
}
}
이 함수는 링크에 대한 클라이언트 측 스크립트로 호출되므로 사용자가 페이지를 더럽혔는지 확인할 수 있습니다. 링크가 아니라 링크를 사용하는 자바 스크립트를 사용하는 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>
그래서 코드가 실행되고 스크립트 라이브러리가 테마에로드되면 왜 오류가 계속 발생합니까? 나는 무엇을 잘못 했는가?
테마로로드하면 태그의 xp 부분을 사용하지 않습니다. 즉, 나는 거기에서 전혀로드 할 수 없다고 말했습니다. –