/* AJAX를 통한 자바스크립트 빠른 미리보기 * 원래 Alex Smotrov의 사용자:알렉스 스모트로프/q프리뷰js * CBM의 사소한 변경 사항: * - 기본 버튼 위치 변경 * - 단추 제목 변경 * - 자동으로 미리보기 맨 위로 스크롤 * <사전> */ 만일 (mw.구성.얻다('wgAction') == '편집' mw.구성.얻다('wgAction') == 'submit') 애드온로드 후크(addQPreview단추); 기능을 하다 addQPreview단추(){ 만일 (!창문의.qPreviewName) qPreviewName = '빠른 미리 보기'; 시합을 하다 액세스키 = 창문의.qPreviewKey ''; 만일 ((!창문의.qPreviewAttBottom) (창문의.qPreviewAttBottom != 1) ) addQPS시스템버튼(qPreviewName, qPreview, 'btnQPreview', '빠른 미리 보기', 액세스키); 다른 addQPToolbar버튼(qPreviewName, qPreview, 'btnQPreview', '빠른 미리 보기', 액세스키); } 기능을 하다 qPreview(){ 시합을 하다 divPreview = 문서화하다.GetElementBy아이디('wikiPreview'); divPreview.스타일.전시하다="차단"; 만일 (!divPreview) 돌아오다; 시합을 하다 BtnQPreview = 문서화하다.GetElementBy아이디('btnQPreview'); 시합을 하다 btnWidth = 수학.맥스.(BtnQPreview.스크롤폭, BtnQPreview.오프셋폭); 만일 (BtnQPreview) BtnQPreview.가치를 매기다 = 창문의.qPreview잠깐, '기다려 주십시요...'; BtnQPreview.스타일.너비 = btnWidth + 'px'; a = sajax_init_object(); a.개방된('POST', 문서화하다.편집 양식.액션+'&live', 진실의); 시합을 하다 경계 = '----------------p1415'; a.setRequest헤더('콘텐츠 유형', '경계/형식 데이터; 경계='+경계); 시합을 하다 txt = 문서화하다.GetElementBy아이디('wpTextbox1').가치를 매기다 ; 만일(txt.인덱스오프('[ref])>=0 && txt.인덱스오프('[]')<0 && txt.인덱스오프('{{reflist')<0) txt+='\n</>\n=참조 미리보기 ==\n{{reflist2}}'; 시합을 하다 포스트데이터 = '--' + 경계 + '\nContent-Disposition: form-data; name="wpTextbox1"\n\n" + txt + '\n--'+경계; 만일 (a.재정의MimeType) a.재정의MimeType('텍스트/텍스트'); a.보내다(포스트데이터); a.온프레미스 체인지 = 기능을 하다(){ 만일 (a.readyState != 4) 돌아오다; 시합을 하다 html = a.반응하다텍스트; html = html.대체하다(/>/g,'>').대체하다(/</g,'<').대체하다(/•/g,'"').대체하다(/&/g,'&').대체하다(/'/g,"'"); divPreview.innerHTML = html; 시합을 하다 좌표 = find QPPOS(divPreview); 창문의.스크롤토(0, 좌표[1]); // 왼쪽 하드, 수직으로 스크롤만 만일 (BtnQPreview) BtnQPreview.가치를 매기다 = qPreviewName; }; } 기능을 하다 addQPS시스템버튼(이름을 붙이다, 클릭을 하다, id, 툴팁, 액세스키){ 시합을 하다 wpPreview = 문서화하다.GetElementBy아이디('wpPreview'); 만일 (!wpPreview) { 돌아오다; } 시합을 하다 BTn = 문서화하다.createElement('input'); BTn.타자를 치다 = '버튼'; 만일 (이름을 붙이다) BTn.가치를 매기다 = 이름을 붙이다; 만일 (클릭을 하다) BTn.클릭을 하다 = 클릭을 하다; 만일 (id) BTn.id = id; 만일 (툴팁) BTn.칭호를 붙이다 = 툴팁; 만일 (액세스키) { BTn.accessKey = 액세스키; BTn.칭호를 붙이다 += ' [' + tooltipAccessKeyPrefix + BTn.accessKey + ']'; } wpPreview.parentNode.삽입 전(BTn, wpPreview); 돌아오다 BTn; } 기능을 하다 addQPToolbar버튼(이름을 붙이다, 클릭을 하다, id, 툴팁, 액세스키){ 시합을 하다 도구 모음 = 문서화하다.GetElementBy아이디('toolbar'); 만일 (!도구 모음) 돌아오다; 시합을 하다 BTn = 문서화하다.createElement('input'); BTn.타자를 치다 = '버튼'; BTn.스타일.배경 = '#adbede'; BTn.스타일.높이 = '22px'; BTn.스타일.수직 정렬 = '중간'; 만일 (이름을 붙이다) BTn.가치를 매기다 = 이름을 붙이다; 만일 (클릭을 하다) BTn.클릭을 하다 = 클릭을 하다; 만일 (id) BTn.id = id; 만일 (툴팁) BTn.칭호를 붙이다 = 툴팁; 만일 (액세스키) BTn.accessKey = 액세스키; 도구 모음.부록차일드(BTn); 돌아오다 BTn; } 기능을 하다 find QPPOS(오비지) { 시합을 하다 왼쪽의 = 커프스 = 0; 만일 (오비지.간격띄우기) { 하다 { 왼쪽의 += 오비지.왼쪽 오프셋; 커프스 += 오비지.간격띄우기 상단; } 하는 동안에 (오비지 = 오비지.간격띄우기); } 돌아오다 [왼쪽의,커프스]; } // </준비>