2014-04-25 2 views
0

브라우저와 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> 

그래서 코드가 실행되고 스크립트 라이브러리가 테마에로드되면 왜 오류가 계속 발생합니까? 나는 무엇을 잘못 했는가?

답변

1

정말로드 되었습니까? 당신이 출력 스크립트를 사용하려고하지만 당신은 server.com/clientSideFunctions에 라이브러리 상대를로드하는 HTML 태그 SCRIPT

그래서 /clientSideFunctions.js이 tryign됩니다를 사용하는 것 같습니다

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

.js이고 데이터베이스와 관련이 없습니다.

대신 이것을 사용 하시겠습니까?

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

테마로로드하면 태그의 xp 부분을 사용하지 않습니다. 즉, 나는 거기에서 전혀로드 할 수 없다고 말했습니다. –

관련 문제