사용자:하늘/addArticleMenuItem.js: 두 판 사이의 차이

편집 요약 없음
편집 요약 없음
1번째 줄: 1번째 줄:
function extendedDropdownItem(htmlObject) {
function extendedDropdownItem(htmlObject) {
     this.menuitem = htmlObject;
     this.menuitem = htmlObject;
     this.AddItem = function (buttontitle, buttonname, {callback, url} = {}) {
   
         var newItem = this.menuitem.cloneNode(true);
     this.AddItem = function (buttontitle, buttonname, callbackOrUrl) {
         let newItem = this.menuitem.cloneNode(true);
         this.menuitem.after(newItem);
         this.menuitem.after(newItem);
         newItem.innerHTML = buttonname;
         newItem.innerHTML = buttonname;
9번째 줄: 11번째 줄:
         newItem.title = buttontitle;
         newItem.title = buttontitle;
          
          
         newItem.callback = callback != null ? callback : null;
         switch (typeof callbackOrUrl) {
        console.log(url);
       
        newItem.href = url != null ? url : 'javascript:;';
        case 'string':
        try {
        new URL(callbackOrUrl);
        } catch (e) {
        newItem.href = 'javascript:;'; // 'Invalid URL'
        return ;
        }
        newItem.href = callbackOrUrl;
        break;
       
        case 'function':
        newItem.onclick = callbackOrUrl;
        break;
       
        }
     };
     };
   
     this.SetMenuItem = function (htmlObject) { this.menuitem = htmlObject; };
     this.SetMenuItem = function (htmlObject) { this.menuitem = htmlObject; };
}
}

2023년 12월 30일 (토) 21:07 판

function extendedDropdownItem(htmlObject) {
	
    this.menuitem = htmlObject;
    
    this.AddItem = function (buttontitle, buttonname, callbackOrUrl) {
        let newItem = this.menuitem.cloneNode(true);
        this.menuitem.after(newItem);
        newItem.innerHTML = buttonname;
        newItem.accessKey = '';
        newItem.style.cursor = 'pointer';
        newItem.title = buttontitle;
        
        switch (typeof callbackOrUrl) {
        
        case 'string': 
	        try {
	        	new URL(callbackOrUrl);
	        } catch (e) {
	        	newItem.href = 'javascript:;'; // 'Invalid URL'
	        	return ;
	        }
	        newItem.href = callbackOrUrl;
        break;
        
        case 'function':
        	newItem.onclick = callbackOrUrl;
        break;
        
        }
    };
    
    this.SetMenuItem = function (htmlObject) { this.menuitem = htmlObject; };
}

if (mw.config.get('skin') == "liberty") {
	window.extendedDropdownItemArray = window.extendedDropdownItemArray || new extendedDropdownItem(document.querySelector('.content-tools .dropdown-item:last-child'));
}
else if (mw.config.get('skin') == "timeless") {
	window.extendedDropdownItemArray = window.extendedDropdownItemArray || new extendedDropdownItem(document.querySelector('.mw-portlet-body #ca-move.mw-list-item'));
}