JavaScript의 .trim()이 IE에서 작동하지 않음
JavaScript 프로그램 중 하나의 문자열에 적용하려고 했습니다.Mozilla에서는 정상적으로 동작하고 있습니다만, IE8에서 시도하면 에러가 표시됩니다.여기서 무슨 일이 일어나고 있는지 아는 사람 있나요?IE에서 작동시킬 수 있는 방법이 있나요?
코드:
var ID = document.getElementByID('rep_id').value.trim();
에러 표시:
메시지:개체가 이 속성 또는 메서드를 지원하지 않습니다.회선: 604문자: 2코드: 0URI: http://test.localhost/test.js
다음 코드를 추가하여 문자열에 트림 기능을 추가합니다.
if(typeof String.prototype.trim !== 'function') {
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, '');
}
}
IE에서는 그 기능이 실장되어 있지 않은 것 같습니다.jQuery를 사용하는 경우 대신 을 사용할 수 있습니다(jQuery 3.5부터는 사용되지 않습니다).
j쿼리:
$.trim( $("#mycomment").val() );
사용하다$("#mycomment").val().trim();
IE를 사용하다
안타깝게도 trim()에 대한 크로스 브라우저 JavaScript는 지원되지 않습니다.
jQuery(.trim() 메서드)를 사용하지 않는 경우 다음 방법을 사용하여 문자열에 트림 지원을 추가할 수 있습니다.
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
return this.replace(/\s+$/,"");
}
https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Objects/String/Trim
이것은 javascript에 새로 추가된 것으로 IE에서는 지원되지 않습니다.
입력에서 값을 잘라내려고 할 때도 같은 문제가 있었습니다.
if ($(this).val().trim() == "")
그러나 IE6 - 8에서는 스패너에 문제가 생겼습니다.귀찮게도, 나는 그것을 그렇게 바꾸려고 하고 있었습니다.
var originalValue = $(this).val();
단, jQuery의 트리밍 방식을 사용하여 모든 브라우저에서 완벽하게 동작합니다.
var originalValueTrimmed = $.trim($(this).val());
if (originalValueTrimmed == "") { ... }
트림 기능을 구현하기 위한 코드를 작성했습니다.
LTRIM(왼쪽 트림):
function ltrim(s)
{
var l=0;
while(l < s.length && s[l] == ' ')
{ l++; }
return s.substring(l, s.length);
}
RTRIM(오른쪽):
function rtrim(s)
{
var r=s.length -1;
while(r > 0 && s[r] == ' ')
{ r-=1; }
return s.substring(0, r+1);
}
트림(양쪽을 모두 고정):
function trim(s)
{
return rtrim(ltrim(s));
}
또는
정규 표현도 사용할 수 있습니다.
function trimStr(str) {
return str.replace(/^\s+|\s+$/g, '');
}
인터넷에서 공식 코드를 얻을 수 있어!다음을 참조하십시오.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim
네이티브로 사용할 수 없는 경우 다른 코드보다 먼저 다음 코드를 실행하면 trim()이 생성됩니다.
if (!String.prototype.trim) { (function() { // Make sure we trim BOM and NBSP var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; String.prototype.trim = function() { return this.replace(rtrim, ''); }; })(); }
자세한 것은 이쪽:EcmaScript 5를 지원하는 js 프로젝트가 있다는 것을 알게 되었습니다.https://github.com/es-shims/es5-shim은 소스 코드를 읽음으로써 트림에 대한 더 많은 지식을 얻을 수 있습니다.
defineProperties(StringPrototype, { // http://blog.stevenlevithan.com/archives/faster-trim-javascript // http://perfectionkills.com/whitespace-deviations/ trim: function trim() { if (typeof this === 'undefined' || this === null) { throw new TypeError("can't convert " + this + ' to object'); } return String(this).replace(trimBeginRegexp, '').replace(trimEndRegexp, ''); } }, hasTrimWhitespaceBug);
것 요.trim()
메서드를 지정합니다.Mozilla가 제공할 수도 있지만 IE에서 사용하려면 직접 작성해야 합니다.이 페이지에는 몇 가지 버전이 있습니다.
IE9에서도 같은 문제가 있었습니다만, 다음의 태그로 서포트되고 있는html 버전을 선언했을 때,
<!DOCTYPE html>
<HTML>
<HEAD>...
.
.
문제는 해결되었다.
이는 오타 오류 getElementBy 때문입니다.ID. getElementBy로 변경합니다.아이디
var res = function(str){
var ob; var oe;
for(var i = 0; i < str.length; i++){
if(str.charAt(i) != " " && ob == undefined){ob = i;}
if(str.charAt(i) != " "){oe = i;}
}
return str.substring(ob,oe+1);
}
IE가 지원을 중단한다는 것을 방금 알게 되었습니다.trim()
최신 윈도 업데이트 후일 수 있습니다.dojo를 사용하면dojo.string.trim()
플랫폼 간에 동작합니다.
이 문제는 IE가 인트라넷사이트에서 호환성 모드를 사용하고 있기 때문에 발생할 수 있습니다.이 문제를 해결하려면 두 가지 방법이 있습니다.로컬 머신에서 IE를 업데이트하여 호환성 모드를 사용하지 않도록 할 수 있습니다(IE11:툴 ->호환성 보기 설정 -> 호환성 보기에서 인트라넷 사이트 표시를 선택 해제).
웹 페이지에서 메타 태그를 업데이트할 수 있습니다.추가:
...
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
</head>
...
이것은 무엇을 의미합니까?IE에 최신 호환성 모드를 사용하도록 지시하고 있습니다.자세한 내용은 MSDN: 레거시 문서 모드 지정
언급URL : https://stackoverflow.com/questions/2308134/trim-in-javascript-not-working-in-ie
'source' 카테고리의 다른 글
UTC는 서머타임을 준수합니까? (0) | 2022.11.04 |
---|---|
Python 문자열이 ASCII로 되어 있는지 확인하는 방법 (0) | 2022.11.04 |
php에서 내 웹사이트의 모든 쿠키를 삭제하는 방법 (0) | 2022.10.25 |
오류 수정 방법: laravel.log를 열 수 없습니다. (0) | 2022.10.25 |
자연어 처리를 위한 Java 또는 Python (0) | 2022.10.25 |