스택 오버플로 (Stack Overflow)의 Markdown 편집기에 빠졌다고 결정했습니다. John Fraser의 포크입니다. showdown.js
입니다. 나는이 파서를 내 프로젝트에 사용하고 싶지만, 소스를 분석 한 후에, 나는 그것이 내 취향에 조금 지저분하다는 것을 발견했다. 자주 발생하지 않는 이유는 무엇입니까?이 JavaScript 코드는 Chrome에서만 왜 잘못 되었습니까?
- 모든 전역 변수를 제거하기,
- 범위 당 하나의
var
에 변수 선언을 결합 - 배열 조인으로의 연결 변경,
- 축소 된 소스를 더 작게 만들기위한 다양한 조정
작은 문제를 제외하고는 모든 것이 아름답게 작동합니다. command.doList
함수의 자동 완성 코드는 Chrome에서 좋지 않습니다. 필자는 Internet Explorer, FireFox 및 Safari에서 제대로 작동하는지 모든 것을 테스트했습니다. 자동 증가 더 이상 목록을 끝 부분
// Get the item prefix - e.g. " 1. " for a numbered list, " - " for a bulleted
// list.
getItemPrefix = function() {
var prefix;
if (isNumberedList) {
// the `s` variable is just a string space.
prefix = [s, num, '. '].join('');
num++;
} else {
prefix = [s, bullet, s].join('');
}
return prefix;
};
// Fixes the prefixes of the other list items.
getPrefixedItem = function (itemText) {
// The numbering flag is unset when called by autoindent.
if (isNumberedList === undefined) {
isNumberedList = /^\s*\d/.test(itemText);
}
// Renumber/bullet the list element.
// THE FOLLOWING LINES COMMENTED OUT TO FIX A BUG.
//itemText = itemText.replace(/^[ ]{0,3}([\*\+\-]|\d+[.])\s/gm,
// function() { return getItemPrefix(); });
return itemText;
};
두 주석 처리 된 라인이 남았습니다 행동에서 크롬을 중지하지만 번호 : 나는 다음과 같은 라인 아래로 문제를 격리하지했습니다. 선을 주석 해제하자마자 모든 주요 브라우저는 Chrome을 제외하고 정상적으로 작동하기 시작합니다. (정렬되지 않은 목록을 사용하려고 할 때 크롬은 미쳐 가고 여분의 번호와 글 머리 기호 목록을 자동-완료도 발생합니다.)
문제는 분명히 여기 스택 오버플로 존재하지 않는, 그래서 나는 희망하고있다 그것은 단지 내 부분에 대한 어리석은 감시 일뿐입니다. (그 또는 스택 오버플로가 버그를 업데이트하고 수정했습니다.)
'num'은 어디에 저장되어 있습니까? – xj9
@indieinvader 두 기능과 동일한 범위입니다. 바로 위에는'var getItemPrefix, getPrefixedItem, num = 1; '의 행에 따른 것이 있습니다. – Stephen