2014-06-24 2 views
0

은 다음과 바이올린을 참조 에이스 편집기 변경 이벤트 기간 동안 IE11에서 잘못된 속성. 이것은 URL을 정규화하는 데 사용되는 앵커 요소에 문자열을 전달합니다. Parse href 버튼을 클릭하여이 기능을 직접 실행할 수도 있습니다.앵커 태그 HREF는

var parseHref = function() 
    var anchorNodeHrefOriginal = urlParsingNode.href; 
    urlParsingNode.setAttribute("href", 'my-href') 
    var firstPassHref = urlParsingNode.href; 
    urlParsingNode.setAttribute("href", firstPassHref) 
    var finalHref = urlParsingNode.href; 
    $('#original-href').html(anchorNodeHrefOriginal); 
    $('#first-pass-href').html(firstPassHref); 
    $('#final-href').html(finalHref); 
} 

editor.getSession().on('change', parseHref) 

이것은 (this 참조) URL을 해결하기 위해 AngularJS와에 의해 사용되는 기능을 복제합니다. 이것은 에세이 편집기에 앵커 에디터를 삽입하려고 할 때 적합합니다.

문제를 재현하려면 일부 텍스트를 복사하여 붙여 넣으십시오 (단지 입력하지 마십시오!). 크롬에서 하단에 표시된 텍스트의 값은 모두 http://fiddle.jshell.net/R3VbC/4/show/my-href과 같아야합니다. IE11에서 똑같은 일을한다면 값은 단순히 'my-href'입니다.

편집기로 타이핑하거나 구문 분석 href 버튼을 클릭하는 등의 다른 방법으로이 parseHref 함수를 실행하면 원하는 결과 (예 : http://fiddle.jshell.net/R3VbC/4/show/my-href)가 표시됩니다. 텍스트를 복사하여 편집기에 붙여 넣는 경우에만 잘못된 값을 제공하는 것 같습니다.

또한

editor.getSession().on('change', function() { 
    window.setTimeout(parseHref); 
}) 

그래서 어떻게 든 에이스 편집기 변경시 IE11에서 제대로 해결에서 앵커 태그를 방지하는 것 같습니다 (http://jsfiddle.net/R3VbC/5/ 참조) window.setTimeout에서 parseHref 기능을 실행하여 해결할 수 있습니다 행사. 왜 이런 일이 일어나고 예방할 수 있습니까?

답변

0

이 ie11 오류는 텍스트 영역에서도 발생합니다 (http://jsfiddle.net/R3VbC/6/). urlParsingNode.setAttribute ("href", firstPassHref)는 paste 이벤트에서 호출 할 때 작동하지 않습니다.

textarea.addEventListener("paste", function(){ 
    parseHref() 
}) 
// not very a useful code snippet, but without it 
// this `extremely intelligent` site removes jsfiddle link:(

을 시도하지만 더 중요한 것은 당신은 변경 이벤트에서, ~ 30ms의 시간 제한과 해고, 사용 편집기 '입력'이벤트를, DOM에 접근처럼, 어떤 느린 작업을하거나 자신을 사용하지 말아야합니다 더 긴 시간 초과.