วิกิพีเดีย:สคริปต์ผู้ใช้
หน้านี้เป็นหน้าสารสนเทศ ซึ่งอธิบายวัตรที่ตั้งแล้วของชุมชนแก้ไขของบางแง่มุมของบรรทัดฐานและขนบธรรมเนียมของวิกิพีเดีย ทั้งนี้ ไม่ใช่นโยบายหรือแนวปฏิบัติของวิกิพีเดีย เพราะยังไม่ผ่านการพิจารณาอย่างถี่ถ้วนจากชุมชน |
สคริปต์ผู้ใช้ (user scripts) เป็นโค้ดภาษาจาวาสคริปต์ ที่ใช้ในการตกแต่ง เปลี่ยนแปลง หรือเพิ่มเติมความสามารถ รูปแบบวิกิพีเดียสำหรับผู้ใช้ดังกล่าว โดยปกติจะใส่ในหน้า __สกิน__.js ของผู้ใช้ ซึ่งความสามารถส่วนนี้สำหรับผู้ที่เป็นสมาชิกวิกิพีเดียเท่านั้น
การใส่สคริปต์ผู้ใช้
โดยให้ใส่โค้ดจาวาสคริปต์ที่ต้องการที่หน้า:
ผู้ใช้:__ชื่อผู้ใช้__/__สกิน__.js
โดยเปลี่ยน "__ชื่อผู้ใช้__" เป็นชื่อผู้ใช้ของคุณเอง และ "__สกิน__" เป็นสกินที่คุณต้องการใช้สคริปต์ เช่น vector หรือ monobook (สกินปริยายของวิกิพีเดียคือ vector)
ตัวอย่างความสามารถเพิ่มเมนูด้านบน
ตัวอย่างความสามารถที่นิยมคือ การเพิ่มเมนูด้านบน เหมือนดังรูปแสดง (หรืออาจจะเพิ่มด้านซ้ายมือ) วิธีใช้โดยการนำฟังก์ชันของจาวาสคริปต์ ไปใส่ไว้ในหน้าผู้ใช้
ตัวอย่างสคริปต์ จากผู้ใช้งานคนอื่น
สคริปต์ ที่นำไปใช้ได้
สคริปต์จะแบ่งเป็น 2 แบบ คือ สคริปต์เครื่องมือ กับสคริปต์เฉพาะทาง โดยการใช้งานของสคริปต์เฉพาะทางอาจ จำเป็น ที่จะต้องใช้ สคริปต์ เครื่องมือตัวใดตัวหนึ่ง ในการช่วยแสดงผล โดยวิธีการนำไปใช้ สามารถเลือกสคริปต์ที่ต้องการไปใส่ไว้ในหน้าสคริปต์ ของตัวเองตามความเหมาะสม สำหรับสคริปต์ เครื่องมือ สามารถใส่ครั้งเดียว และสามารถเรียกใช้ได้มากกว่าหนึ่งครั้ง
สำคัญ: ทุกครั้งที่มีการเปลี่ยนแปลงหน้าจาวาสคริปต์ของคุณ ให้ทำการ Refresh หน้านั้นหลังจากบันทึกเพื่อเห็นการเปลี่ยนแปลง ขั้นตอนการ Refresh:
- ใน IE กด Ctrl-F5
- ใน Mozilla/Safari/Konqueror กด Shift ค้าง แล้วกด Reload (หรือ Ctrl-Shift-R)
- ใน Opera กด F5
สคริปต์เครื่องมือ
เพิ่มแท็บด้านบน
สคริปต์ตัวนี้อาจใช้ไม่ได้แล้ว เนื่องจากซอฟต์แวร์มีเดียวิกิมีการอัพเดตมาหลายรุ่น |
function addTab(url, name, id, title, key) { var tabs = document.getElementById('p-cactions').getElementsByTagName('ul') [0]; addlilink(tabs, url, name, id, title, key) ; }
เพิ่มเมนู เครื่องมือ ด้านซ้าย
สคริปต์ตัวนี้อาจใช้ไม่ได้แล้ว เนื่องจากซอฟต์แวร์มีเดียวิกิมีการอัพเดตมาหลายรุ่น |
function addlilink(tabs, url, name, id, title, key) { var na = document.createElement('a') ; na.href = url; na.appendChild(document.createTextNode(name)) ; var li = document.createElement('li') ; if(id) li.id = id; li.appendChild(na) ; tabs.appendChild(li) ; na.accesskey = key; var pref = 'alt-'; if(((clientPC.indexOf('AppleWebKit') !=-1) && (clientPC.indexOf('spoofer') ==-1)) || navigator.userAgent.toLowerCase().indexOf( 'mac' ) != -1 ) pref = 'control-'; if(clientPC.indexOf('opera') !=-1) pref = 'shift-esc-'; if(key && title) na.title = title + ' [' + pref + key + ']'; else if(title) na.title = title; else if(key) na.title = '[' + pref + key + ']'; return li; }
อ่านชื่อของหน้านั้น
var articleTitle = mw.config.get('wgPageName');
สคริปต์เฉพาะทาง
ใส่ข้อความต้องการความช่วยเหลือ
สคริปต์ตัวนี้ใช้ไม่ได้แล้ว เนื่องจากซอฟต์แวร์มีเดียวิกิมีการอัพเดตมาหลายรุ่น |
ใส่ข้อความต้องการความช่วยเหลือ ที่ส่วนบนของบทความ และทำการเซฟบทความทันที
// ========== Quick Wikify ========== function doQwikify() { document.editform.wpTextbox1.value = "{{ช่วยดูหน่อย}}\n\n" + document.editform.wpTextbox1.value; document.editform.wpSummary.value = "ช่วยดูหน่อย"; document.editform.wpMinoredit.checked = true; document.editform.submit() ; } function addQwikify() { addTab("javascript:doQwikify() ", "ช่วย", "ca-wikify", "แจ้งว่าช่วยดูหน่อย", "") ; akeytt() ; } if (document.title.indexOf("แก้ไข ") == 0) { if (window.addEventListener) window.addEventListener("load", addQwikify, false) ; else if (window.attachEvent) window.attachEvent("onload", addQwikify) ; }
แจ้งโฆษณา
ใส่กล่องข้อความแจ้งโฆษณา ที่ส่วนบนของบทความ และทำการเซฟบทความทันที
// ========== แจ้งโฆษณา ========== addOnloadHook(function() { //check if called from deletion request if(document.getElementById('ca-nstab-special')) { return; } if (document.title.indexOf("แก้ไข") != -1) { if (document.URL.lastIndexOf("&fakeaction=advert") == -1) return; document.editform.wpTextbox1.value = "{{โฆษณา}}\n\n" + document.editform.wpTextbox1.value; document.editform.wpSummary.value = "แจ้งโฆษณา"; document.editform.submit() ; return; } addTab("javascript:doAdvert() ", "แจ้งโฆษณา", "ca-advert", "คำสั่งแจ้งโฆษณา", "") ; }) ; function doAdvert() { //edit page var title = document.title.substr(0, document.title.lastIndexOf(' - วิกิพีเดีย')) ; location.assign("/w/index.php?title=" + title + "&action=edit&fakeaction=advert") ; }
แจ้งลบ
ใส่กล่องข้อความแจ้งลบ ที่ส่วนบนของบทความ และทำการเซฟบทความทันที
// ========== แจ้งลบ ========== addOnloadHook(function() { //check if called from deletion request if(document.getElementById('ca-nstab-special')) { return; } if (document.title.indexOf("แก้ไข") != -1) { if (document.URL.lastIndexOf("&fakeaction=speedydel") == -1) return; document.editform.wpTextbox1.value = "{{ลบ}}\n\n" + document.editform.wpTextbox1.value; document.editform.wpSummary.value = "แจ้งลบ"; document.editform.submit() ; return; } addTab("javascript:doQsd() ", "แจ้งลบ", "ca-sd", "คำสั่งแจ้งลบ", "") ; }) ; function doQsd() { //edit page var title = document.title.substr(0, document.title.lastIndexOf(' - วิกิพีเดีย')) ; location.assign("/w/index.php?title=" + title + "&action=edit&fakeaction=speedydel") ; }
แจ้งละเมิดลิขสิทธิ์
สคริปต์ตัวนี้ใช้ไม่ได้แล้ว เนื่องจากซอฟต์แวร์มีเดียวิกิมีการอัพเดตมาหลายรุ่น |
ใส่กล่องข้อความแจ้งละเมิดลิขสิทธิ์พร้อมเติมวันที่ในเวลาไทยให้โดยอัตโนมัติ ที่ส่วนบนของบทความ
// ========== แจ้งละเมิดลิขสิทธิ์ (รุ่นใส่เวลาไทย) ========== function doCopyViolation() { var currentDay = new Date() ; var thaiDate = new Date(currentDay.getTime() + 25200000) ; //7*1000*60*60 var month = thaiDate.getUTCMonth() +1; var year = thaiDate.getUTCFullYear() +543; document.editform.wpTextbox1.value = "{{ละเมิดลิขสิทธิ์ | url= | วันที่=" + thaiDate.getUTCDate() + "/" + month + "/" + year + " | หมายเหตุ= }}" document.editform.wpSummary.value = "แจ้งละเมิดลิขสิทธิ์ "; } function addCopyViolation() { addTab("javascript:doCopyViolation() ", "ละเมิด", "ca-vio", "แจ้งละเมิดลิขสิทธิ์", "") ; akeytt() ; } if (document.title.indexOf("แก้ไข ") == 0) { if (window.addEventListener) window.addEventListener("load", addCopyViolation, false) ; else if (window.attachEvent) window.attachEvent("onload", addCopyViolation) ; }
เก็บกวาดนโยบายเก่า
// ========== เก็บกวาดนโยบายเก่า ========== // สคริปต์นี้ เปลี่ยนคำสั่งเก่า เช่น Category, Image, และข้อความเก่า function doCleanupTag() { text = document.editform.wpTextbox1.value; text = replace(text,'[[Category:','[[หมวดหมู่:') ; text = replace(text,'[[category:','[[หมวดหมู่:') ; text = replace(text,'[[Image:','[[ภาพ:') ; text = replace(text,'[[image:','[[ภาพ:') ; text = replace(text,'== แหล่งอ้างอิง','== อ้างอิง') ; text = replace(text,'== หนังสืออ้างอิง','== อ้างอิง') ; text = replace(text,'== เอกสารอ้างอิง','== อ้างอิง') ; text = replace(text,'== แหล่งข้อมูลอ้างอิง','== อ้างอิง') ; text = replace(text,'== หัวข้ออื่นที่เกี่ยวข้อง','== ดูเพิ่ม') ; text = replace(text,'== ดูเพิ่มที่','== ดูเพิ่ม') ; text = replace(text,'== เว็บไซต์อื่น','== แหล่งข้อมูลอื่น') ; text = replace(text,'== เว็บไซต์ภายนอก','== แหล่งข้อมูลอื่น') ; text = replace(text,'== โยงภายนอก','== แหล่งข้อมูลอื่น') ; text = replace(text,'== ลิงก์ภายนอก','== แหล่งข้อมูลอื่น') ; text = replace(text,'== ลิงค์ภายนอก','== แหล่งข้อมูลอื่น') ; text = replace(text,'== Link ภายนอก','== แหล่งข้อมูลอื่น') ; text = replace(text,'== ข้อมูลภายนอก','== แหล่งข้อมูลอื่น') ; text = replace(text,'*[','* [') ; document.editform.wpTextbox1.value = text; document.editform.wpSummary.value = "แก้ไข +เก็บกวาด"; } function addCleanupTag() { addTab("javascript:doCleanupTag() ", "เก็บกวาด", "ca-taclt", "เก็บกวาด", "") ; } if (document.title.indexOf("แก้ไข ") == 0) { if (window.addEventListener) window.addEventListener("load", addCleanupTag, false) ; else if (window.attachEvent) window.attachEvent("onload", addCleanupTag) ; }
สลับเปลี่ยนระหว่างตัวเลขอารบิกกับเลขไทย
สคริปต์ตัวนี้ใช้ไม่ได้แล้ว เนื่องจากซอฟต์แวร์มีเดียวิกิมีการอัพเดตมาหลายรุ่น |
// ========== Replace string ========== // Javascript from http://www.irt.org/script/242.htm function replace(string,text,by) { // Replaces text with by in string var strLength = string.length, txtLength = text.length; if ((strLength == 0) || (txtLength == 0)) return string; var i = string.indexOf(text) ; if ((!i) && (text != string.substring(0,txtLength))) return string; if (i == -1) return string; var newstr = string.substring(0,i) + by; if (i+txtLength < strLength) newstr += replace(string.substring(i+txtLength,strLength) ,text,by) ; return newstr; } // ========== Thai to Arabic Numbers ========== // This script converts all Thai numbers (๑ ๒ ๓) to Arabic numbers (1 2 3) function doConvertNumber() { text = document.editform.wpTextbox1.value; text = replace(text,'๑','1') ; text = replace(text,'๒','2') ; text = replace(text,'๓','3') ; text = replace(text,'๔','4') ; text = replace(text,'๕','5') ; text = replace(text,'๖','6') ; text = replace(text,'๗','7') ; text = replace(text,'๘','8') ; text = replace(text,'๙','9') ; text = replace(text,'๐','0') ; document.editform.wpTextbox1.value = text; document.editform.wpSummary.value = "เปลี่ยนเลขไทยเป็นอารบิก"; } function addConvertNumber() { addTab("javascript:doConvertNumber() ", "๒ ->2", "ca-tanum", "เปลี่ยนเลขไทยเป็นอารบิก", "") ; akeytt() ; } if (document.title.indexOf("แก้ไข ") == 0) { if (window.addEventListener) window.addEventListener("load", addConvertNumber, false) ; else if (window.attachEvent) window.attachEvent("onload", addConvertNumber) ; } // ========== Arabic to Thai Numbers ========== // This script converts all Arabic numbers (1 2 3) to Thai numbers (๑ ๒ ๓) function doConvertToThaiNumber() { text = document.editform.wpTextbox1.value; text = replace(text,'1','๑') ; text = replace(text,'2','๒') ; text = replace(text,'3','๓') ; text = replace(text,'4','๔') ; text = replace(text,'5','๕') ; text = replace(text,'6','๖') ; text = replace(text,'7','๗') ; text = replace(text,'8','๘') ; text = replace(text,'9','๙') ; text = replace(text,'0','๐') ; document.editform.wpTextbox1.value = text; document.editform.wpSummary.value = "เปลี่ยนเลขอารบิกเป็นไทย"; } function addConvertToThaiNumber() { addTab("javascript:doConvertToThaiNumber() ", "2 ->๒", "ca-atnum", "เปลี่ยนเลขอารบิกเป็นไทย", "") ; akeytt() ; } if (document.title.indexOf("แก้ไข ") == 0) { if (window.addEventListener) window.addEventListener("load", addConvertToThaiNumber, false) ; else if (window.attachEvent) window.attachEvent("onload", addConvertToThaiNumber) ; }
แก้ย่อหน้าแรกสุด (ย่อหน้าสรุป)
สคริปต์ตัวนี้อาจใช้ไม่ได้แล้ว เนื่องจากซอฟต์แวร์มีเดียวิกิมีการอัพเดตมาหลายรุ่น |
// ========== Edit Section 0 ========== function addEditSection0() { ta['ca-edit-0'] = ['', 'Edit the zeroth section of this page']; if (!document.getElementById) return; x = document.getElementById('ca-edit') ; if(!x) return; y = document.createElement('LI') ; y.id = 'ca-edit-0'; if (x.className == 'selected') { if (/&action=edit§ion=0$/.test(window.location.href)) { x.className = 'istalk'; y.className = 'selected'; } else { x.className = 'selected istalk'; } } else if (x.className == 'selected istalk') { if (/&action=edit§ion=0$/.test(window.location.href)) { x.className = 'istalk'; y.className = 'selected istalk'; } else { y.className = 'istalk'; } } else { y.className = x.className; x.className = 'istalk'; } z = document.createElement('A') ; if (x.children) { z.href = x.children[0].href + '§ion=0'; z.appendChild(document.createTextNode('0')) ; y.appendChild(z) ; document.getElementById('p-cactions').children[1].insertBefore(y,x.nextSibling) ; } else { z.href = x.childNodes[0].href + '§ion=0'; z.appendChild(document.createTextNode('0')) ; y.appendChild(z) ; document.getElementById('p-cactions').childNodes[3].insertBefore(y,x.nextSibling) ; } } if (document.title.indexOf("Editing ") == -1) { if (window.addEventListener) window.addEventListener("load", addEditSection0, false) ; else if (window.attachEvent) window.attachEvent("onload", addEditSection0) ; }
ดูความแตกต่างล่าสุด
สคริปต์ตัวนี้อาจใช้ไม่ได้แล้ว เนื่องจากซอฟต์แวร์มีเดียวิกิมีการอัพเดตมาหลายรุ่น |
// ========== ดูความแตกต่างล่าสุด (Last diff) ========== var articleTitle = mw.config.get('wgPageName'); function doLastDiff() { var nurl="http://th.wikipedia.org/w/index.php?title=" + articleTitle + "&diff=cur&oldid=prev"; document.location=nurl; } function addLastDiff() { var tabs = document.getElementById('p-cactions').getElementsByTagName('ul') [0]; var l=addlilink(tabs, "javascript:doLastDiff() ", 'ล่าสุด', '') ; l.lastChild.title="ดูความแตกต่างล่าสุด"; } if (document.title.indexOf("แก้ไข") == -1) { if(wgCanonicalNamespace.indexOf("Special") == -1) { if (window.addEventListener) window.addEventListener("load", addLastDiff, false) ; else if (window.attachEvent) window.attachEvent("onload", addLastDiff) ; } }