四、菜单管理(1)---菜单页面、列表呈现,数据管理和删除

在这里插入图片描述


一、菜单管理设计说明


1.1 业务设计说明

菜单管理又称为资源管理,是系统资源对外的表现形式。本模块主要是实现对菜单进行添加、修改、查询、删除等操作。其表设计语句如下:

CREATE TABLE `sys_menus` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL COMMENT '资源名称',
  `url` varchar(200) DEFAULT NULL COMMENT '资源URL',
  `type` int(11) DEFAULT NULL COMMENT '类型     1:菜单   2:按钮',
  `sort` int(11) DEFAULT NULL COMMENT '排序',
  `note` varchar(100) DEFAULT NULL COMMENT '备注',
  `parentId` int(11) DEFAULT NULL COMMENT '父菜单ID,一级菜单为0',
  `permission` varchar(500) DEFAULT NULL COMMENT '授权(如:sys:user:create)',
  `createdTime` datetime DEFAULT NULL COMMENT '创建时间',
  `modifiedTime` datetime DEFAULT NULL COMMENT '修改时间',
  `createdUser` varchar(20) DEFAULT NULL COMMENT '创建用户',
  `modifiedUser` varchar(20) DEFAULT NULL COMMENT '修改用户',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='资源管理';

菜单表与角色表是 多对多 的关系,在表设计时,多对多关系通常由中间表(关系表)进行维护,如图所示:
在这里插入图片描述
基于角色菜单表的设计,其角色和菜单对应的关系数据要存储到关系表中,其具体存储形式,如图所示:
在这里插入图片描述
菜单与角色的关系表脚本设计如下:

CREATE TABLE `sys_role_menus` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `role_id` int(11) DEFAULT NULL COMMENT '角色ID',
  `menu_id` int(11) DEFAULT NULL COMMENT 'ID',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='角色与菜单对应关系';

1.2 原型设计说明

基于用户需求,实现菜单静态页面(html/css/js),通过静态页面为用户呈现菜单模块的基本需求实现。
当在主页左侧菜单栏,点击菜单管理时,在主页内容呈现区,呈现菜单列表页面,如图所示:在这里插入图片描述
当在菜单列表页面点击添加按钮时,异步加载菜单编辑页面,并在列表内容呈现区,呈现菜单编辑页面,如图所示:

在这里插入图片描述
在菜单编辑页面选择上级菜单时,异步加载菜单信息,并以树结构的形式呈现上级菜单,如图所示:
在这里插入图片描述
说明: 假如客户对此原型进行了确认,后续则可以基于此原型进行研发。

1.3 API设计说明

菜单管理业务后台API分层架构及调用关系如图所示:
在这里插入图片描述
说明:分层目的主要将复杂问题简单化,实现各司其职,各尽所能。


二、菜单管理列表页面呈现


2.1 业务时序分析

菜单管理页面的加载过程,其时序分析如图所示:
在这里插入图片描述

2.2 服务端实现

2.2.1 Controller实现
  • 业务描述与设计实现

基于菜单管理的请求业务,在PageController中添加doMenuUI方法,用于返回菜单列表页面。

  • 关键代码设计与实现

第一步:在PageController中定义返回菜单列表的方法。代码如下:

@RequestMapping("menu/menu_list")
public String doMenuUI() {
	return "sys/menu_list";
}
 

第二步:在PageController中基于rest风格的url方式优化返回UI页面的方法。找出共性进行提取,例如:

@RequestMapping("{module}/{moduleUI}")
public String doModuleUI(@PathVariable String moduleUI) {
		return "sys/"+moduleUI;
}

2.3 客户端实现

2.3.1 首页菜单事件处理
  • 业务描述与设计实现

首先准备菜单列表页面(/templates/pages/sys/menu_list.html),然后在starter.html页面中点击菜单管理时异步加载菜单列表页面。

  • 关键代码设计与实现

找到项目中的starter.html页面,页面加载完成以后,注册菜单管理项的点击事件,当点击菜单管理时,执行事件处理函数。关键代码如下:

$(function(){doLoadUI("load-menu-id","menu/menu_list")
})

说明: 对于doLoadUI函数,假如在starter.html中已经定义,则无需再次定义.

function doLoadUI(id,url){
 	$("#"+id).click(function(){
    		$("#mainContentId").load(url);
   });
}

其中,load函数为jquery中的ajax异步请求函数。

2.3.2 菜单列表页面
  • 业务描述与设计实现

本页面呈现菜单信息时要以树结构形式进行呈现。此树结构会借助jquery中的treeGrid插件进行实现,所以在菜单列表页面需要引入treeGrid相关JS。但是,具体的treeGrid怎么用可自行在网上进行查询(已比较成熟)。

  • 关键代码设计与实现:

关键JS引入(menu_list.html),代码如下:

<script type="text/javascript" src="bower_components/treegrid/jquery.treegrid.extension.js"></script>
<script type="text/javascript" src="bower_components/treegrid/jquery.treegrid.min.js"></script>
<script type="text/javascript" src="bower_components/treegrid/tree.table.js"></script>

三、菜单管理列表数据呈现


3.1 数据架构分析

菜单列表页面加载完成,启动菜单数据异步加载操作,本次菜单列表页面要呈现菜单以及2息,其数据查询时,数据的封装及传递过程,如图所示:
在这里插入图片描述
说明:本模块将从数据库查询到的菜单数据封装到map对象,一行记录一个map对象,其中key为表中的字段(列)名,值为字段(列)对应的值。

数据加载过程其时序分析,如图所示:
在这里插入图片描述

3.2 服务端关键业务及代码实现

3.2.1 Dao接口实现
  • 业务描述及设计实现

通过数据层对象,基于业务层参数,查询菜单以及上级菜单信息(要查询上级菜单名)。

  • 关键代码分析及实现

第一步:定义数据层接口对象,通过此对象实现数据库中菜单数据的访问操作。关键代码如下:

@Mapper
public interface SysMenuDao {
}

第二步:在SysMenuDao接口中添加findObjects方法,基于此方法实现菜单数据的查询操作。代码如下:

List<Map<String,Object>> findObjects();

说明: 一行记录映射为一个map对象,多行存储到list。
思考: 这里为什么使用map存储数据,有什么优势劣势?

3.2.2 Mapper文件实现
  • 业务描述及设计实现

基于Dao接口创建映射文件,在此文件中通过相关元素(例如select)描述要执行的数据操作。

  • 关键代码设计及实现

第一步:在映射文件的设计目录中添加SysMenuMapper.xml映射文件,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cy.pj.sys.dao.SysMenuDao">
  
</mapper>

第二步:在映射文件中添加id为findObjects的元素,实现菜单记录查询。我们要查询所有菜单以及菜单对应的上级菜单名称。关键代码如下:

<select id="findObjects" resultType="map">
         
          <!-- 方案1
          select c.*,p.name parentName
          from sys_menus c left join sys_menus p
          on c.parentId=p.id 
          -->
          <!-- 方案2 -->
          select c.*,(
                    select p.name 
                    from sys_menus p
                    where c.parentId=p.id
                    ) parentName
          from sys_menus c
 </select>

说明:自关联查询分析,如图所示:
在这里插入图片描述

3.2.3 Service接口及实现类
  • 业务描述与设计实现

在菜单查询中,业务层对象主要是借助数据层对象完成菜单数据的查询。后续还可以基于AOP对数据进行缓存,记录访问日志等。

  • 关键代码设计及实现

第一步:定义菜单业务接口及方法,暴露外界对菜单业务数据的访问,其代码参考如下:

package com.cy.pj.sys.service;
public interface SysMenuService {
	 List<Map<String,Object>> findObjects();
}

第二步:定义菜单业务接口实现类,并添加菜单业务数据对应的查询操作实现,其代码参考如下:

package com.cy.pj.sys.service.impl;
@Service
public class SysMenuServiceImpl implements SysMenuService{
	  @Autowired
      private SysMenuDao sysMenuDao;
	  @Override
	  public List<Map<String, Object>> findObjects() {
		List<Map<String,Object>> list=
			sysMenuDao.findObjects();
		if(list==null||list.size()==0)
		throw new ServiceException("没有对应的菜单信息");
		return list;
}
3.2.4 Controller类实现
  • 业务描述与设计实现

控制层对象主要负责请求和响应数据的处理,例如,本模块通过业务层对象执行业务逻辑,再通过VO对象封装响应结果(主要对业务层数据添加状态信息),最后将响应结果转换为JSON格式的字符串响应到客户端。

  • 关键代码设计与实现

定义Controller类,并将此类对象使用Spring框架中的@Controller注解进行标识,表示此类对象要交给Spring管理。然后基于@RequestMapping注解为此类定义根路径映射。代码参考如下:

package com.cy.pj.sys.controller;
@RequestMapping("/menu/")
@RestController
public class SysMenuController {
}

说明: 这里的@RestController注解等效于在类上同时添加了@Controller和 @ResponseBody注解.
在Controller类中添加菜单查询处理方法,代码参考如下:

@RequestMapping("doFindObjects")
public JsonResult doFindObjects() {
	return new  JsonResult(sysMenuService.findObjects());
}
 

3.3 客户端关键业务及代码实现

3.3.1 菜单列表信息呈现
  • 业务描述与设计实现

菜单页面加载完成以后,向服务端发起异步请求加载菜单信息,当菜单信息加载完成需要将菜单信息呈现到列表页面上。

  • 关键代码设计与实现

第一步:在菜单列表页面引入treeGrid插件相关的JS。

<script type="text/javascript" src="bower_components/treegrid/jquery.treegrid.extension.js"></script>
<script type="text/javascript" src="bower_components/treegrid/jquery.treegrid.min.js"></script>
<script type="text/javascript" src="bower_components/treegrid/tree.table.js"></script>

第二步:在菜单列表页面,定义菜单列表配置信息,关键代码如下:

var columns = [
{
	field : 'selectItem',
	radio : true
},
{
	title : '菜单ID',
	field : 'id',
	align : 'center',
	valign : 'middle',
	width : '80px'
},
{
	title : '菜单名称',
	field : 'name',
	align : 'center',
	valign : 'middle',
	width : '130px'
},
{
	title : '上级菜单',
	field : 'parentName',
	align : 'center',
	valign : 'middle',
	sortable : true,
	width : '100px'
},
{
	title : '类型',
	field : 'type',
	align : 'center',
	valign : 'middle',
	width : '70px',
	formatter : function(item, index) {
		if (item.type == 1) {
			return '<span class="label label-success">菜单</span>';
		}
		if (item.type == 2) {
			return '<span class="label label-warning">按钮</span>';
		}
	}
}, 
{
	title : '排序号',
	field : 'sort',
	align : 'center',
	valign : 'middle',
	sortable : true,
	width : '70px'
}, 
{
	title : '菜单URL',
	field : 'url',
	align : 'center',
	valign : 'middle',
 
	width : '160px'
}, 
{
	title : '授权标识',//要显示的标题名称
	field : 'permission',//json串中的key
	align : 'center',//水平居中
	valign : 'middle',//垂直居中
	sortable : false //是否排序
} ];//格式来自官方demos -->treeGrid(jquery扩展的一个网格树插件)

第三步:定义异步请求处理函数,代码参考如下:

function doGetObjects(){//treeGrid
	//1.构建table对象(bootstrap框架中treeGrid插件提供)
	var treeTable=new TreeTable(
			"menuTable",//tableId
			"menu/doFindObjects",//url
			 columns);
	//设置从哪一列开始展开(默认是第一列)
	//treeTable.setExpandColumn(2);
	//2.初始化table对象(底层发送ajax请求获取数据)
	treeTable.init();//getJSON,get(),...
}

第四步:页面加载完成,调用菜单查询对应的异步请求处理函数,关键代码如下:

$(function(){
	doGetObjects();
})

四、菜单管理删除操作实现


4.1 业务时序分析

基于用户在列表页面上选择的的菜单记录ID,执行删除操作,本次删除业务实现中,首先要基于id判断当前菜单是否有子菜单,假如有子菜单则不允许删除,没有则先删除菜单角色关系数据,然后再删除菜单自身信息。其时序分析如图所示:
在这里插入图片描述

4.2 服务端关键业务及代码实现

4.2.1 Dao接口实现
  • 业务描述及设计实现

数据层基于业务层提交的菜单记录id,删除菜单角色关系以及菜单数据,菜单自身记录信息。

  • 关键代码设计及实现

第一步:创建SysRoleMenuDao并定义基于菜单id删除关系数据的方法,关键代码如下:

@Mapper
public interface SysRoleMenuDao {
	int deleteObjectsByMenuId(Integer menuId);
}

第二步:在SysMenuDao中添加基于菜单id查询子菜单记录的方法。代码参考如下:

int getChildCount(Integer id);

第三步:在SysMenuDao中添加基于菜单id删除菜单记录的方法。代码参考如下:

int deleteObject(Integer id);
4.2.2 Mapper文件实现
  • 业务描述及设计实现

在SysRoleMenuDao,SysMenuDao接口对应的映射文件中添加用于执行删除业务的delete元素,然后在元素内部定义具体的SQL实现。

  • 关键代码设计与实现

第一步:创建SysRoleMenuMapper.xml文件并添加基于菜单id删除关系数据的元素,关键代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cy.pj.sys.dao.SysRoleMenuDao">
<delete id="deleteObjectsByMenuId"
             parameterType="int">
          delete from sys_role_menus
          where menu_id=#{menuId}
     </delete>
</mapper>

第二步:在SysMenuMapper.xml文件中添加基于id统计子菜单数量的元素,关键代码如下:

<select id="getChildCount"
             parameterType="int"
             resultType="int">
          select count(*)
          from sys_menus
          where parentId=#{id}        
 </select>

第三步:在SysMenuMapper.xml文件添加delete元素,基于带单id删除菜单自身记录信息,关键代码如下:

<delete id="deleteObject">
   delete from sys_menus
   where id =#{id}
   
</delete>
4.2.3 Service接口及实现类
  • 业务描述与设计实现

在菜单业务层定义用于执行菜单删除业务的方法,首先通过方法参数接收控制层传递的菜单id,并对参数id进行校验。然后基于菜单id统计子菜单个数,假如有子菜单则抛出异常,提示不允许删除。假如没有子菜单,则先删除角色菜单关系数据。最后删除菜单自身记录信息后并返回业务执行结果。

  • 关键代码设计与实现

第一步:在SysMenuService接口中,添加基于id进行菜单删除的方法。关键代码如下:

int deleteObject(Integer id);

第二步:在SysMenuServiceImpl实现类中注入SysRoleMenuDao相关对象。关键代码如下:

@Autowired
private SysRoleMenuDao sysRoleMenuDao;

第三步:在SysMenuServiceImpl实现类中添加删除业务的具体实现。关键代码如下:

@Override
public int deleteObject(Integer id) {
	//1.验证数据的合法性
	if(id==null||id<=0)
	throw new IllegalArgumentException("请先选择");
	//2.基于id进行子元素查询
	int count=sysMenuDao.getChildCount(id);
	if(count>0)
	throw new ServiceException("请先删除子菜单");
	//3.删除角色,菜单关系数据
	sysRoleMenuDao.deleteObjectsByMenuId(id);
	//4.删除菜单元素
	int rows=sysMenuDao.deleteObject(id);
	if(rows==0)
	throw new ServiceException("此菜单可能已经不存在");
	//5.返回结果
	return rows;
}
4.2.4 Controller类实现
  • 业务描述与设计实现

在菜单控制层对象中,添加用于处理菜单删除请求的方法。首先在此方法中通过形参接收客户端提交的数据,然后调用业务层对象执行删除操作,最后封装执行结果,并在运行时将响应对象转换为JSON格式的字符串,响应到客户端。

  • 关键代码设计与实现

第一步:在SysMenuController中添加用于执行删除业务的方法。代码如下:

@RequestMapping("doDeleteObject")
public JsonResult doDeleteObject(Integer id){
	sysMenuService.deleteObject(id);
	return new JsonResult("delete ok");
}

第二步:启动tomcat进行访问测试,打开浏览器输入如下网址:

http://localhost/menu/doDeleteObject?id=10

4.3 客户端关键业务及代码实现

4.3.1 菜单列表页面事件处理
  • 业务描述及设计实现

用户在页面上首先选择要删除的元素,然后点击删除按钮,将用户选择的记录id异步提交到服务端,最后在服务端执行菜单的删除动作。

  • 关键代码设计与实现

第一步:页面加载完成以后,在删除按钮上进行点击事件注册。关键代码如下:

...
$(".input-group-btn")
	   .on("click",".btn-delete",doDeleteObject)
...

第二步:定义删除操作对应的事件处理函数。关键代码如下:

function doDeleteObject(){
	//1.获取选中的记录id
	var id=doGetCheckedId();
	if(!id){
	  alert("请先选择");
	  return;
	}
   //2.给出提示是否确认删除
  if(!confirm("确认删除吗"))return;
	//3.异步提交请求删除数据
	var url="menu/doDeleteObject";
	var params={"id":id};
	$.post(url,params,function(result){
		if(result.state==1){
			alert(result.message);
			$("tbody input[type='radio']:checked")
	          .parents("tr").remove();
		}else{
			alert(result.message);
		}
	});
}

第三步:定义获取用户选中的记录id的函数。关键代码如下:

function doGetCheckedId(){
	//1.获取选中的记录
	var selections=$("#menuTable")
	//bootstrapTreeTable是treeGrid插件内部定义的jquery扩展函数
	//getSelections为扩展函数内部要调用的一个方法
	.bootstrapTreeTable("getSelections");
	//2.对记录进行判定
	if(selections.length==1)
	return selections[0].id;
}
  • 9
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
网院 计算机应用基础作业1答案 计算机应用基础作业1 一、单项选择题(共40题) 1、第一台电子计算机是1946年在美国研制成功的,该机的英文缩写名是(A) A.ENIAC B.EDVAC C.EDSAC D.MARK 2、当前计算机已应用于各种行业、各种领域,而计算机最早的设计是应用于(B) A.数据处理 B.科学计算 C.辅助设计 D.过程控制 3、专家系统能够利用人类专家的知识和解决问题的方法来处理该领域问题,这属于计算 机应用中的(D) A.科学计算 B.数据处理 C.自动控制 D.人工智能 4、第一代计算机体积大、耗电多、性能低,其主要原因是受制于(B) A.工艺水平 B.元器件 C.设计水平 D.元材料 5、计算机内部用于处理数据和指令的编码是(B) A.十进制码 B.二进制码 C.ASCII码 D.汉字编码 6、与二进制数11111110等值的十进制数是(D) A.251 B.252 C.253 D.254 7、8个字节含二进制位(D) A.8个 B.16个 C.32个 D.64个 8、对于信息,下列说法错误的是(D) A.信息是可以处理的 B.信息是可以传播的 C.信息是可以共享的 D.信息可以不依附于某种载体而存在 9、计算机中,CPU直接存取程序和数据的地方是(B) A.硬盘 B.内存 C.ROM D.光盘 10、对输入到计算机中的某种非数值型数据用二进制数来表示的转换规则被称为(A) A.编码 B.数制 C.校检 D.信息 11、十进制数向二进制数进行转换时,十进制数91相当于二进制数(D) A.1101011 B.1101111 C.1110001 D.1011011 12、在Windows窗口的任务栏中有多个应用程序按钮图标时,其中代表应用程序窗口是当 前窗口的图标所呈现的状态为(C) A."高亮" B."灰化" C."压下" D."凸起" 13、以下项不属于Windows操作系统特点的是(D) A.图形界面 B.多任务 C.即插即用 D.不会受到黑客攻击 14、在资源管理器中,包含"删除"命令的菜单项是(A) A.文件 B.编辑 C.查看 D.工具 15、在资源管理器中,"新建文件夹"命令在(A)菜单项的下拉菜单中。 A.文件 B.编辑 C.查看 D.工具 16、计算机病毒最主要的特征是(A) A.传染性和破坏性 B.破坏性和潜伏性 C.欺骗性潜伏性 D.隐蔽性和潜伏性 17、多媒体计算机主要特点是(D) A.较大的体积 B.较强的联网功能和数据库能力 C.大多数基于Client/Server模型 D.较强的音视频处理能力 18、在Windows 中,有关"资源管理器"右边窗口中的内容,下列说法正确的是(D) A.只能使用"打开"命令 B.不可以使用"复制"命令 C.不能使用"删除"命令 D.可以使用"删除"命令 19、在查找文件时,通配符*与?的含义是(A) A.*表示任意多个字符,?表示任意一个字符 B.?表示任意多个字符,*表示任意一个字符 C.*和?表示乘号和问号 D.查找*.?与?.*的文件是一致的 20、下列字符中ASCII码值最小的是(B) A.a B.A C.f D.Z 21、在Windows中,按(C)键进行各种输入法的切换。 A.Ctrl B.Space C.ctrl+shift D.Shift 22、在Word的编辑状态,按先后顺序依次打开了d1.doc、d2.doc、d3.doc、d4.doc 4个文档,当前的活动窗口中的文档是(D) A.d1.doc B.d2.doc C.d3.doc D.d4.doc 23、Excel工作表中最小操作单元是(A) A.单元格 B.一行 C.一列 D.一张表 24、在Word编辑状态,可以使插入点快速移到文档首部的组合键是(A) A.Ctrl+Home B.Alt+Home C.Home D.PageUp 25、Word 2003默认的"格式"工具栏中没有"(A)"快捷按钮。 A.左对齐 B.右对齐 C.居中 D.两端对齐 26、在Word编辑状态,能设定文档行间距命令的菜单是(C) A."文件"菜单 B."窗口"菜单 C."格式"菜单 D."工具"菜单 27、在Word中,如果要使文档内容横向打印,在"页面设置"中应选择的标签 是(D) A。纸型 B.纸张来源 C.版面 D.页边距 28、在Word的编辑状态,打开文档 "Word1",修改后另存为"Word2",则文 档Word1(D) A.被文档ABD覆盖 B.被修改未关闭 C.被修改并关闭 D.未修改被关闭 29、设定打印纸张大小时,应当使用的命令是(B) A."文件"菜单中的"打印预览"命令 B."文件"菜单中的"页面设置"命令 ' C."视图"菜单中的"工具栏"命令 D."视图
扩展以增强BlueCat Address Manager UI中的用户体验 #简介扩展,以增强BlueCat Address Manager用户界面中的用户体验。此扩展是为BlueCat Address Manager用户界面提供缺少的或生活质量的功能。 有关脚本及其用途的信息,请参考以下网站,该网站发布了单个脚本以与内容脚本加载扩展一起使用:-https://openuserjs.org/users/n3kgalm/scripts-*更多详细说明脚本*-https://greasyfork.org/en/users/171314-marius-galm-*脚本的更多详细说明*-https://github.com/n3kgalm/bcn-scripts-*代码base * =>安装后保存一次设置,以设置新脚本的初始状态<= ---#在Chrome上可用:https://chrome.google.com/webstore/detail/bluecat-enhancement-suite/kmdojjlcckelhlndimpopmonleajgpae -Firefox:https://addons.mozilla.org/de/firefox/addon/bluecat-enhancement-suite/--版本历史记录## v1.3.5-修复:-显示标记层次结构:复制和粘贴错误已修复# #v1.3.4-新功能:-将CIDR悬停到蒙版:悬停cidr时显示带有完整位网络掩码的工具提示-增强功能:-颜色更改:现在还可以在登录页面上更改颜色- 修复:-Direct Actions服务器:GEN4设备支持-扩展事件日志/表快速过滤器:分隔符视觉调试## v1.3.3-新功能:-显示标签层次结构:显示标签的层次结构,以直观,快速地访问## v1 3.2-Firefox ## v1.3.1的重新上传-增强功能:-显示区域视图:现在还在视图旁边显示区域的配置-修复:-顶部按钮:调整底值以防止阻塞BAM UI时钟## v1 .3.0-新功能:-显示区域视图:在使用多个视图时显示其旁边的区域的视图,以防止混淆## v1.2.0-新功能:-暗模式:使用反转和色相旋转例外创建深色样式(默认情况下处于禁用状态)-修复标题:从颜色更改中剥离功能,以始终使标题固定,而不是仅在颜色站点上固定-修复:-自动切换到标记对象:防止循环的条件错误-高亮行悬停时显示:现在可用于所有表,而不仅限于第一个-Gen 链接:现在可用于所有表,而不仅是第一个表-直接操作审核跟踪:从没有意义的页面删除-常规:使URL匹配更加精确,以最大程度地减少无BAM网页上的错误加载-更改:-颜色更改:不再修复标题,将功能移至单独的功能## v1.1.1-修复:-表格快速过滤器:修复了搜索框显示在不需要的地方-复制到剪贴板和IP网络信息:按钮现在在第一行也可见如果不是标题行## v1.1.0-增强功能:-表快速过滤器:现在可用于所有表而不是仅第一表-修复:-表快速过滤器和扩展事件日志:自定义分隔符现在包括事件发生时的管道日志页面以获取更多可见性## v1.0.1-增强功能:-引导程序更新至3.3.7-修复:-IP网络信息:弹出窗口在Firefox中不起作用## v1.0.0-我自己的内部决定:这是1.0版本;-)-新功能:-直接操作审核跟踪:添加直接按钮以调用A 当前对象的udit跟踪-IP网络信息:查找IPv4 CIDR范围或IPv6前缀会显示一个按钮,以覆盖计算出的网络信息+复制按钮-增强功能:-将内容内部的徽标更改为白色,而不是完全透明以支持较暗的浏览器-快速表格过滤器:现在还显示结果计数-修复:-表格计数器:现在计数所有表格并在正确的标题上写入计数-旧页面和异常页面将不再加载脚本--- ## v0.3.1-增强功能:-Chrome通知在安装或更新时向用户指示更改和潜在的新功能-修复:-从清单动态读取版本-还原按钮:偶然出现在所有历史记录页面中,而不是仅取消删除--- ## v0.3.0-新功能:-快速表格过滤器:向第一张表格的有限可见输出添加过滤器--- ## v0.2.1-增强功能:-各种脚本中的次要修复程序--- ## v0.2.0-新功能:-生成链接:呈现新功能文字包含 g URL作为数据表中的链接。 -增强功能:-固定服务器部署按钮在“详细信息”以外的选项卡中不起作用。 -对当前脚本的较小修复。 --- ## v0.1.0-新功能:-选项菜单的上次保存时间戳-直接动作块网络:用于显示块和网络直接动作的新功能(如编辑/调整大小/移动/分割)-增强功能:-直接现在,仅当您将鼠标悬停在某个元素上时,动作才会显示出来,以使其不再笨拙--- ## v0.0.5-新功能

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

经理,天台风好大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值