위키백과:사용자 스크립트/기술

이 페이지는 사용자 스크립트 작성에 필요한 공통 작업을 달성하기 위한 다양한 기법을 수집할 것이다. 다양한 대안의 한계, 상대적 휴대성, 속도에 대한 논의가 강하게 권장된다. 거기에는 많은 복제와 비최적적인 노력이 있고, 이것은 희망컨대 우리가 더 쉽고 빠르게 더 촘촘하고 더 정확한 코드를 쓰도록 장려할 것이다.

위키백과 콘텐츠와의 상호작용을 위한 고급 API가 개발되고 있으며, 그 중 상당 부분이 이미 운영되고 있다. 다양한 가능성은 mw:API. AJAX 요청(아래 참조)을 쿼리가 포함된 API로 전송하는 것이 목적이다. 이 쿼리의 결과는 여러 형식으로 반환될 수 있으며, 그 중 JSON이 아마도 가장 유용할 것이다(아래 참조).

페이지 유형 식별

현재 페이지의 현재 네임스페이스가 편집 페이지인지, 미리보기 페이지인지, 특수 페이지인지를 식별하는 기법을 말한다.

미리보기 페이지

document.GetElementById("wikiPreview") 

페이지 편집

document.GetElementById("편집 양식") 

이것은 페이지를 편집하지 않을 때 무효가 된다.

기록 페이지

mw.config.get('wgAction') ==='history' 

특수 페이지

mw.config.get('wgCanonical Namespace') ==='Special' 

내역이 있는 페이지

document.GetElementById('ca-history') 

편집 가능한 페이지

document.GetElementById('ca-edit') 

현재 페이지를 편집 중인 경우 편집 탭도 반환된다는 점을 유념하십시오.

페이지의 다양한 부분 가져오기

페이지 제목 및 네임스페이스 가져오기

  • mw.config.get('wgCanonicalNamespace') 네임스페이스 이름 포함(예: 아티클 공간에 대한 "")
  • mw.config.get('wgCanonicalSpecialPageName') 일반적으로 거짓이지만 특수 페이지의 경우 비필수 이름을 포함한다.
  • mw.config.get('wgNamespaceNumber') 주 네임스페이스의 경우 0, 특수 페이지의 경우 -1, 기타 네임스페이스의 경우 기타 값.
  • mw.config.get('wgPageName') url에 나와 있는 그대로의 기사 이름(예: "쿠마노_코도")이다. 네임스페이스 식별자를 포함한다.
  • mw.config.get('wgTitle') 네임스페이스 식별자나 탈출이 없는 기사 제목(예: "쿠마노 코도").

다양한 도구 모음(개인, 탭, 사이드바) 가져오기

var 탭 = document.GetElementById(BAR NAME).getElementsByTagName('ul')[0]; 
  • 여기서 BAR NAME은 다음 문자열 중 하나이다.
  • 'p-causes' - 페이지 상단에 있는 탭(기사, 토론, 편집, 기록, 이동 및 보기 링크 포함)
  • 'p-personal' - 개인 도구 모음(즉, 사용자 페이지, 사용자 토크, prefs, watchlist, 기여, 로그아웃에 대한 링크가 있는 맨 위에 있는 도구 모음)
  • 'p-내비게이션' - 탐색 도구 모음(예: 메인 페이지, 피쳐링 콘텐츠 등)
  • 'p-properties' - 탐색 도구 모음 아래에 있는 상호 작용 도구 모음
  • 'p-tb' - 도구 상자(여기 링크, 관련 변경 사항 등)

TODO: 누군가 검색과 도구상자 하나를 테스트해보고, 그것들이 동일한지 확인해봐. 고마워!

검색창은 'p-search'인데 그 안에 <ul> 요소가 없다. [118] 2006년 6월 24일 10시 38분 (UTC)
검색 상자는 단순히 다음을 교체하는 것으로 검색할 수 있다. 'ul'getElementsByTagName('ul') 와 함께 'div' 모든 도구 상자의 ID가 div 태그에 있듯이. Extreecircuitz (TalkUserboxes 페이지) 20:17, 2007년 10월 21일 (UTC)

내용 삽입

document.GetElementById("내용").insertBefore(document.createTextNode("abcdef"), document.getElementsByTagName("h1")[0]) 
  • h1 머리글이 있는 페이지에서는 OSX의 Firefox 1.0.4에서 작동하지만 일부 다른 브라우저에서는 작동하지 않는다. 그 방법이나 이유를 아는 사람? 제시W 20:58, 2005년 8월 29일 (UTC)
  • 아니오, 하지만 페이지가 로드될 때까지 실행을 지연하면 도움이 되십니까? 루핀 토크 팝업은 2005년 10월 4일 12시 14분 (UTC)

버튼 누름

document.editform.wpDiff.click() 
  • Diff 버튼을 누른다.

기존 인터페이스 링크 변경

To change the url, name, or any other aspect of existing tab buttons, personal bar links, or other links, use the following: (where id is the id of the link to be changed, e.g. "pt-preferences", "ca-edit", "n-portal" or "t-whatlinkshere"; url is the new URL, and name is the new displayed name for the link, e.g. "my preferences", "edit this page", "커뮤니티 포털" 또는 "여기에 링크")

document.GetElementById(id.childNodes[0].href=url q=document.getElementByid(id).firstChild; q.removeChild(q.firstChild); q.appendChild(document.createTextNode(이름))    

온로드 구조

jQuery는 이벤트에 기능을 연결할 수 있다.

$( myFunction ); 

함수는 다음과 같이 인라인으로 쓸 수도 있다.

$(() 함수 { // 여기서 코드 } ); 

이전에 설정되었을 수 있는 다른 함수를 덮어쓰므로 함수에 직접 할당하지 마십시오.

외부 js 파일을 위키백과에 포함

mw.loader.load는 외부 javascript 또는 css:

mw.짐을 싣다.짐을 싣다( 'http://meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript', '텍스트/텍스트' ); mw.짐을 싣다.짐을 싣다( 'http://example.org/mystyles.css', 'text/css' ); mw.짐을 싣다.짐을 싣다( 'http://example.org/mystyles.js', '텍스트/텍스트' ); 

아약스

위키백과 참조:WikiProject 사용자 스크립트/Guide#Ajax
$.getscript('http://example.org/foo.js', 기능을 하다 () {  // Foo.js가 장착됨! } ) 

자동 편집

클래식 편집 페이지에서는 다음과 같은 Wikitext가 있는 텍스트 상자를 찾을 수 있다.

var t = document.editform.wpTextbox1; 

그런 다음 textSelection 플러그인의 메소드를 사용하여 text 영역과 상호 작용하거나 요약을 편집하십시오. 이 모듈은 모듈을 강조 표시하는 구문처럼 텍스트 영역의 값을 조작하려는 다른 모듈과 함께 수정 작업을 수행하도록 한다.

제이슨

예를 들어 MediaWiki API가 jQuery 유틸리티를 사용할 때 자동으로 JSON 텍스트를 구문 분석:

jQuery.getJSON(   mw.이용하다.위키스크립트( 'api' ), {     '형식': 'json',     '행동': 'query',     'meta': 'userinfo'   }, 기능을 하다 ( 자료 ) {     // 데이터.query.userinfo   } ); 

스크립트 업데이트

사용자 컴퓨터의 스크립트는 브라우저 캐시를 바이패스(삭제)하여 최신 버전으로 업데이트되며, 사용자는 Shift-Reload(Mozilla) 또는 Shift-F5(MS-IE)를 눌러야 한다. JavaScript는 다음을 호출하여 동일한 작업을 수행할 수 있다.

창문의.위치.재장전하다(진실의); 

강제 다시 로드("forceGet")는 모든 이미지, 스크립트 및 스타일시트를 포함한 현재 페이지를 즉시 다시 로드한다. 편집 내용이 손실될 수 있으므로 편집 또는 미리보기 페이지에서 이 작업을 수행해서는 안 된다.

스크립트가 많이 설치된 사용자의 경우 스크립트를 모두 다시 로드하는 데 시간이 많이 걸릴 수 있다. JavaScript를 외부 응용프로그램을 사용하여 브라우저 캐시에서 임의 파일을 제거하는 방법에 대한 코드는 Gerbrant.mng.decache 및 해당 대화 페이지를 참조하십시오.

다른 Wikimedia Wiki의 페이지 편집

일반적으로는 사용되지 않지만, 모든 위키미디어 위키 사이에 코르스가 활성화되어 있다. 크로스 위키 편집의 예는 여기를 참조하십시오.