layui.use(['notify', 'jquery', 'xmSelect'], function () { var form = layui.form, layer = layui.layer, notify = layui.notify, $ = layui.jquery, xmSelect = layui.xmSelect; var cookieSelect = xmSelect.render({ el: '#cookieNames', name: 'cookieNames', tips: '请选择需要监控的Cookie', empty: '请先输入需要监控的URL', layVerType: 'tips', autoRow: true, filterable: true, data: [] }) chrome.storage.sync.get(null, function (result) { form.val("configForm", result); switchIsAutoPush(result.isAutoPush) let selectData = [] for (const cookieName of result.cookieNames) { selectData.push({ name: cookieName, value: cookieName, selected: true }) } cookieSelect.update({ data: selectData }) }); let switchIsAutoPush = (isAutoPush) => { let autoPushConfig = $('#autoPushConfigView') if (isAutoPush) { autoPushConfig.removeClass('layui-hide') autoPushConfig.find('input.layui-input').attr("lay-verify", "required") autoPushConfig.find('input.xm-select-default').attr("lay-verify", "required") } else { autoPushConfig.addClass('layui-hide') autoPushConfig.find('input.layui-input').removeAttr("lay-verify") autoPushConfig.find('input.xm-select-default').removeAttr("lay-verify") } } form.on('switch(isAutoPush)', function () { switchIsAutoPush(this.checked) }); $("#listenerUrl").blur(function () { let value = $(this).val() if (!isUrl(value)) { layer.tips('请输入正确的URL', '#listenerUrl'); cookieSelect.update({ data: [] }) return } chrome.cookies.getAll({ url: value }, cookies => { if (!cookies || !cookies.length) { layer.tips('该URL下无任何cookie', '#listenerUrl'); } let newData = [] for (const cookie of cookies) { newData.push({ name: cookie.name, value: cookie.name }) } cookieSelect.update({ data: newData }) }) }) form.on('submit(save)', function (obj) { let data = obj.field if(data.fieldLocation==="header"&&forbiddenRequestHeaders.includes(data.fieldName)){ layer.tips('header传参不能使用此字段名', '#fieldName'); return false; } if(data.fieldLocation==="body"&&data.method==="GET"){ notify.error("使用GET方法的请求不能有body") return false; } data.isAutoPush = data.isAutoPush ? true : false if(data.cookieNames){ data.cookieNames = data.cookieNames.split(','); }else{ data.cookieNames = [] } console.log(data) chrome.storage.sync.set(data, function () { notify.success("保存成功") }); return false; }); }); var forbiddenRequestHeaders = [ "accept-charset", "accept-encoding", "access-control-request-headers", "access-control-request-method", "connection", "content-length", "content-transfer-encoding", "cookie", "cookie2", "date", "expect", "host", "keep-alive", "origin", "referer", "te", "trailer", "transfer-encoding", "upgrade", "via"]; function isUrl(str) { var v = new RegExp('^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$', 'i'); return v.test(str); };