2010-12-01 2 views
1

스택 오버플로 (Stack Overflow)의 Markdown 편집기에 빠졌다고 결정했습니다. John Fraser의 포크입니다. showdown.js입니다. 나는이 파서를 내 프로젝트에 사용하고 싶지만, 소스를 분석 한 후에, 나는 그것이 내 취향에 조금 지저분하다는 것을 발견했다. 자주 발생하지 않는 이유는 무엇입니까?이 JavaScript 코드는 Chrome에서만 왜 잘못 되었습니까?

그래서 나는 즉, 내 요구를 충족하기 위해 자바 스크립트 코드를 수정에 대한 설정 :

  1. 모든 전역 변수를 제거하기,
  2. 범위 당 하나의 var에 변수 선언을 결합
  3. 배열 조인으로의 연결 변경,
  4. 축소 된 소스를 더 작게 만들기위한 다양한 조정

작은 문제를 제외하고는 모든 것이 아름답게 작동합니다. 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을 제외하고 정상적으로 작동하기 시작합니다. (정렬되지 않은 목록을 사용하려고 할 때 크롬은 미쳐 가고 여분의 번호와 글 머리 기호 목록을 자동-완료도 발생합니다.)

문제는 분명히 여기 스택 오버플로 존재하지 않는, 그래서 나는 희망하고있다 그것은 단지 내 부분에 대한 어리석은 감시 일뿐입니다. (그 또는 스택 오버플로가 버그를 업데이트하고 수정했습니다.)

+0

'num'은 어디에 저장되어 있습니까? – xj9

+0

@indieinvader 두 기능과 동일한 범위입니다. 바로 위에는'var getItemPrefix, getPrefixedItem, num = 1; '의 행에 따른 것이 있습니다. – Stephen

답변

2

fix에서 다른 WMD 포크 (32 행)를 볼 수 있습니다.

+0

글쎄, 저것 좀 봐. 그리고 나는 그것이 바로 나이라고 생각했습니다! – Stephen

0

* + - 대괄호 안에 백 슬래시를 넣을 필요는 없습니다. Chrome에서 문제가있는 것일 수 있습니다.

+0

적어도 다른 언어에서는 정규 표현식을 사용하지 않습니다. 자바 스크립트에 대해서는 확실하지 않습니다 –

+0

흠. JSLint는 그것에 관해서 나에게 논쟁을 벌였습니다. 그래서 나는 그것을 추가했습니다. – Stephen

+0

"-"는 중간에 문제가 발생할 수 있지만 끝에는 문제가되지 않을 수 있습니다. –

관련 문제