油猴子腳本界面分別添加了3個select下拉選框,前面的搜索引擎可以根據設定默認選定值,后面的前后臺打開/后側打開添加一個不顯示input的selex,通過sel()回傳值,能得到selected標簽元素,無法對應的默認選定的后臺:false

Alt+Y進入設定界面
https://greasyfork.org/zh-CN/scripts/426697
設定默認值
_cfg = {
Gesture: {
mouseButton: 2,
suppressionKey: "",
distanceThreshold: 2,
distanceSensitivity: 20,
Timeout: {
active: true,
duration: 1
}
},
Drag: {
linktextAslink: true,
dragInTextarea: true
},
directions: 8,//方向
language: "zh",
gesture:{
//"2": {name:"toTop", arg:[]},
},
text: {// dragText
"3": {
name:"searchText",
arg:["https://www.baidu.com/s?wd=", false, true]
},
"6": {
name:"searchText",
arg:["https://www.google.com/search?q=", false, true]
}
},
link: {// drag link
"3": {
name:"openLink",
arg:[false, true]
},
"9": {name:"copyLink", arg:[]},
},
image: {// drag image
"2": {
name:"openImgURL",
arg:[false, true]
},
"3": {
name:"searchImg",
arg:["https://graph.baidu.com/details?isfromtusoupc=1&tn=pc&carousel=0&promotion_name=pc_image_shituindex&extUiData%5bisLogoShow%5d=1&image=U-R-L", false, true]
}
},
arg標簽
arg: {
userDefine:{
description:{zh:['自定義功能代碼'], en:['User Define Function Code']},
arg:['textarea']
},
openLink:{
description:{zh:['前臺打開', '右側打開'], en:['Open Link', 'Load In Foreground', 'Open in Next Tab']},
arg:['selex:foreGround', 'selex:nextTab']
},
openImgURL:{
description:{zh:['前臺打開', '右側打開'], en:['Copy ImageURL', 'Load In Foreground', 'Open in Next Tab']},
arg:['selex:foreGround', 'selex:nextTab']
},
openImgLink:{
description:{zh:['前臺打開', '右側打開'], en:['Open ImageLink', 'Load In Foreground', 'Open in Next Tab']},
arg:['selex:foreGround', 'selex:nextTab']
},
searchText:{
description:{zh:['搜索引擎', '前臺打開', '右側打開'], en:['SearchingEnging', 'Load In Foreground', 'Open in Next Tab']},
arg:['select:searchEnging', 'selex:foreGround', 'selex:nextTab']
},
searchImg:{
description:{zh:['圖片搜索引擎', '前臺打開', '右側打開'], en:['Image SearchingEnging', 'Load In Foreground', 'Open in Next Tab']},
arg:['select:imgSearchEnging', 'selex:foreGround', 'selex:nextTab']
}
},
下拉選框
options = {
imgSearchEnging: {// image searching
Baidu: "https://graph.baidu.com/details?isfromtusoupc=1&tn=pc&carousel=0&promotion_name=pc_image_shituindex&extUiData%5bisLogoShow%5d=1&image=U-R-L",
},
searchEnging: {// text searching
Baidu: "https://www.baidu.com/s?wd=",
Google: "https://www.google.com/search?q=",
},
foreGround: {
前臺: "ture",
后臺: "false",
},
nextTab: {
右側: "ture",
后端: "false"
}
};
設定界面
function arg2html(argument, type, trk){
let html ="",
argu, i,rand, trackTxt, name,
argValue = [],
agrDetail = [],
description,
selectName;
if(typeof argument === "object")
argu = argument;
else
argu = JSON.parse(argument);
trackTxt = trk || '';
name = argu.name;
html += `<span>${name}</span><span name="alias">${argu.alias ? argu.alias : local[type][name][cfg.language]}</span><b style="visibility:${argu.arg.length ? "visible" : "hidden"};" name="toggleArgument">↑</b><input type="text" name="${name}" value="https://bbs.csdn.net/topics/${trackTxt}" data-mark="${type}" readonly="readonly"><br/><div class="fnArgument">`;
if(argu.arg.length > 0){
argValue = trackTxt ? argu.arg : [];
agrDetail = fnLocal.arg[name].arg;
description = fnLocal.arg[name].description[cfg.language];
for(i in agrDetail){
rand = Math.floor(Math.random()*1000);
switch (agrDetail[i].slice(0,5)) {
case 'texta':
html += `<span><textarea>${mpUnescape(argValue[i])}</textarea><i></i></span>`;
break;
case 'input':
html += '<span><input type="text"><i></i></span>';
break;
case 'check':
html += `<span><input type="checkbox" id="${name + rand}" value=https://bbs.csdn.net/topics/${argValue[i] || false} ${argValue[i] ? "checked" : ''} class="switch" name="fnCheckbox"><label for="${name + rand}" ${argValue[i] ? 'class="switchOn"' : 'class="switchOff"'}>${description[i]}</label></span>`;
break;
case 'selec':
selectName = agrDetail[i].split(':').pop();
html += `<span><input type="text" value=https://bbs.csdn.net/topics/${argValue[i] || ''}><select name="fnSelect">`;
for (let k in options[selectName]){
html += `<option value=https://bbs.csdn.net/topics/${options[selectName][k]} ${sel(argValue[i], options[selectName][k])}>${k}`;
}
html += '</select></span>';
break;
case 'selex':
selectName = agrDetail[i].split(':').pop();
//html += `<span><input type="hidden" value=https://bbs.csdn.net/topics/${argValue[i]}> html += `<span><select name="fnSelect">`;
for (let l in options[selectName]){
console.log("a:"+argValue[i]+"-"+i)
console.log("b:"+options[selectName][l]+"-"+l)
html += `<option value=https://bbs.csdn.net/topics/${options[selectName][l]} ${sel(argValue[i], options[selectName][l])}>${l}`;
}
html += '</select></span>';
break;
default:
html = `<span style="visibility:hidden;"></span>`;
break;
}
}
}
return html + "</div>";
}
sel()函式傳入值相同,回傳option標簽selected
function sel(val1, val2){
return val1 == val2 ? 'selected="selected"' : '';
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/284533.html
標籤:JavaScript
