문제

IE Mobile에서 작업 해야하는 모바일 웹 앱에서 작업하고 있습니다. IE 모바일에 도달하는 JavaScript 오류를 좁혔습니다.className'속성 (IE4 엔진 ...). 최소한의 코드 변경으로 모든 브라우저에서 작동하는 대안을 찾으려고 노력하고 있습니다 (이미 사용하는 라이브러리가 이미 있습니다. 'className').

내가 생각할 수있는 가장 쉬운 접근법은 IE의 요소 프로토 타입을 클래스 이름 (없는 경우)을 포함하도록 수정하는 것입니다. 문제는 대안이 무엇인지 알지 못한다는 것입니다.className'즉, 즉 모바일에 있습니다.

나는 이것을 시도했다 :

element.className = element.class;

분명히 작동하지 않습니다 class JavaScript의 키워드이며 JS 압축기는 마음에 들지 않으며 어쨌든 유효하지 않을 수 있습니다.

'stattribute ()'를 사용하는 것 외에는 요소 클래스를 수정 해야하는 모든 곳에서 클래스 이름과 동등한 속성이 있습니까?

도움이 되었습니까?

해결책

사용을 피할 수는 없습니다 setAttribute(), jQuery Playbook에서 줄을 꺼내고 선택적 매개 변수와 함께 도우미 절차를 사용할 수 있습니다. 이 코드는 테스트되지 않았지만 작동해야합니다.

var className = function (obj, value)
{
    if (value !== undefined)
    {
        return obj.setAttribute ('class', value);
    }
    return obj.getAttribute ('class');
};

// Use as
alert (className (element));
className (element, "foo");
alert (className (element));

다른 팁

속성이 없습니다. getAttribute () 및 setAttribute ()에 갇혀있는 것이 두렵습니다.

John Millikin을 다음과 같이 추적하면 IE의 요소 프로토 타입의 기능을 수행 할 수도 있습니다.

Element.prototype.getClass = function() {
    return obj.getAttribute ('class');
}
Element.prototype.setClass = function(newClass) {
    return obj.setAttribute('class', newClass);
}

또는 John과 같은 콤보 방법을 원한다면 ...

Element.prototype.className = function(newClass) {
    if (!newClass)
        return this.getClass();
    return this.setClass(newClass);
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top