HTML- 텍스트 영역의 데이터를 데이터베이스에 삽입하는 JSP로 전송합니다.Java2Javascript에서 u000D u000A의 적절한 변환
페이지가 다시로드되면 데이터베이스 레코드는이 텍스트 영역과 JavaScript 변수에 저장됩니다. 변수는 사용자가 텍스트 영역의 값을 변경했는지 여부를 결정하는 데 사용됩니다.
자바 스크립트의 테스트 절차는 아주 기본적인이며 대부분의 시간을 작동합니다
if(orig_info != document.getElementById('info').value)
//Something has changed!
는 이제 어떤 경우에는 아무것도 호출되는 변화 과정을 변경되지 않은 경우에도 것을 발생합니다. 나는 텍스트 영역과 변수를 파이어 버그 (firebug)로 검사했고 그것은 같은 텍스트이다. 홀수, 그래서 양 문자열의 길이 판독 : 아직
document.getElementById('info').value.length 231
orig_info.length 235
내가 4 개 문자의 차이를 볼 수 없었다 그래서 I 간단한 산출했다 : 편지의 문자 - 숫자, 문자, Unicode16 및 가지고 있음 : 우선 하나는 텍스트 영역입니다 : document.getElementById('info').value
, 두 번째는 orig_bemerkung
61 |. |\u002E| 61 |. |\u002E
62 | |\u000A| 62 | |\u000D
63 |1 |\u0031| 63 | |\u000A
64 |1 |\u0031
지금 나는 그것이 \u000D
및 \u000A
와 이전 문제의 참조 변수를합니다.
어떻게 해결해야할지 모르겠다. 서버에서 나는 다음과 같은 코드를 작성합니다 :
ret.append("\ndocument.getElementById('info').innerHTML='").append(StringEscapeUtils.escapeJavaScript(this.getInfo())).append("';");
ret.append("orig_info = '").append(StringEscapeUtils.escapeJavaScript(this.getInfo())).append("';\n");
return ret.toString();
정확히 동일한 코드가 사용 된 경우에도 텍스트 영역은 변수와 다른 내용을 처리합니다. 누군가가 전에 텍스트 영역에 Enter를 사용 했는데도 orig_info
이 document.getElementById('info').value
인 문제를 해결할 수 있습니까?
좋은 생각입니다. 이제는 쉬운 방법으로 변경했습니다. 'orig_info = document.getElementById ('info'). value.replace (/ ([^ \ r] | ^) \ n/g, "$ 1 \ r \ n") ; ' 나머지는 전송 방법이 다르기 때문에 더 큰 거래이지만 내 문제가 해결되었습니다. 고맙습니다! – Qohelet
네, 괜찮습니다. 나는 단지 명백한 모범을 보려고 노력했을 뿐이었다. 다행 이네; 나는 웹 프로그래밍 세계의이 특별한 이상한 부분이 왜 그리 주목을 끄는 지 모르겠다. – Pointy
불행히도 당신이 옳습니다. 지난 몇 개월 동안 나는 논리가 부족하다고 생각했지만 해결책을 찾지 못했습니다. 오늘 나는 문자열을 수동으로 비교하기 시작했다. 내 생각에 98 %의 경우 CR-LF는 문제가되지 않거나 아무도 실제로는 차이가 나는 장비를 사용하기 때문에 (예전 프린터와 마찬가지로) 관련이 없습니다. 적어도 지금은 2 %입니다.) – Qohelet