利用本地的html文件通过ajax访问服务器
在 chrome 的快捷方式上右键属性,选中快捷方式 tab,在目标栏的最后添加以下参数,然后重启 chrome,用来测试的文件就放在下面配置的 data-dir 里
注意:每个—前面都有一个空格
注意:服务器必须开启跨域访问
--user-data-dir="C:\Users\13551\Desktop" --test-type --disable-web-security
动态加载上传图片
前端
// 就是获取图片的存储路径,让图片标签的src值指向一个后台写流的方法function showImg(img) { let url = img.url let path = '/uploadFileFile/getBytesByAbsolutePath?imgPath=' + url $('img').attr('src', path)}
后端
/** * @Description: 根据图片的绝对路径返回字节流 */@RequestMapping(value = "/getBytesByAbsolutePath")@ResponseBodypublic void getBytesByAbsolutePath(HttpServletRequest request, HttpServletResponse response) throws Exception{ String imgPath = request.getParameter("imgPath ...
isNaN()
sNaN() 函数其实并不能像它的描述中所写的那样,数字值返回 false,其他返回 true。
实际上,它是判断一个值能否被 Number() 合法地转化成数字。
这中间有什么区别呢,主要提现在一些特别的情况如下:
1、数字形式的字符串。例如 “123”、”-3.14”,虽然是字符串型,但被 isNaN() 判为数,返回 false。(”12,345,678”,”1.2.3” 这些返回 true)
2、空值。null、空字符串””、空数组[],都可被 Number()合法的转为 0,于是被 isNaN 认为是数,返回 false。(undefined、空对象{}、空函数等无法转数字,返回 true)
3、布尔值。Number(true)=1,Number(false)=0,所以 isNaN 对布尔值也返回 false。
4、长度为 1 的数组。结果取决于其中元素,即:isNaN([a])=isNaN(a),可递归。例如 isNaN([[“1.5”]])=false。
5、数字特殊形式。例如”0xabc”、”2.5e+7”,这样的十六进制和科学计数法,即使是字符串也能转数字,所以也返 ...
键盘事件
回车搜索$('#search').bind('keydown', function (event) { var e = event || window.event || arguments.callee.caller.arguments[0] if (e.keyCode == 13) { // search是输入框,此处是要执行输入完毕后按下回车后的操作 //………….. }})
利用jQuery实现让容器的滚动条滚动到某个内部元素的位置。让内部元素本来在中间,一下子跑到最上面
<ul class="parent" style="height:50px;overflow:auto"> <li class="children" style="height:25px"></li> <li class="children" style="height:25px"></li> <li class="children" style="height:25px"></li> <li class="children" style="height:25px"></li></ul>
$('.parent').scrollTop( $('.children:eq(2)').offset().top - $( ...
后台接口返回的数据出现了$ref,$data.xxx的字样
分析原因:个人理解是如果后台返回了个 map,map 里面放了两个 key 值,但是这两个 key 所对应的 value 指向的是同一个目标地址,概括为两个 key 所对应的 value 是同一个,或者说一个 value 对象(值相同,地址相同)用 map 的两个 key 值存储,那么返回前台时,第二个 key 的值不会是 value 而是第一个 key 的 value 的地址。
可以简单理解为:map 里面有重复的 value,那么就会出现如标题所示的字样。
某个dom全屏或者整体页面全屏
//如果dom没有就让整个页面全屏const full = document.querySelector('#box') || document.documentElementif (full.RequestFullScreen) { full.RequestFullScreen() //兼容Firefox} else if (full.mozRequestFullScreen) { full.mozRequestFullScreen() //兼容Chrome, Safari and Opera等} else if (full.webkitRequestFullScreen) { full.webkitRequestFullScreen() //兼容IE/Edge} else if (full.msRequestFullscreen) { full.msRequestFullscreen()}
常见的前端手写功能
1、防抖function debounce(fn, delay) { let timer return function (...args) { if (timer) { clearTimeout(timer) } timer = setTimeout(() => { fn.apply(this, args) }, delay) }}// 测试function task() { console.log('run task')}const debounceTask = debounce(task, 1000)window.addEventListener('scroll', debounceTask)
2、节流function throttle(fn, delay) { let last = 0 // 上次触发时间 return function (...args) { ...
常用的区段查询表单验证
1.正整数区段查询支持全不填,全填,和单独填任意一个
html 代码
<div class="layui-input-inline"> <input type="text" id="sjtjStartMile" placeholder="开始里程(m)" autocomplete="off" class="layui-input" /></div><div class="layui-form-mid">-</div><div class="layui-input-inline"> <input type="text" id="sjtjEndMile" placeholder="结束里程(m)" autocomplete="o ...
获取时间
var getDate = function getNowFormatDate() { //获取当前时间 var date = new Date() var seperator1 = '-' var seperator2 = ':' var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1 var strDate = date.getDate() < 10 ? '0' + date.getDate() : date.getDate() var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + ' ' + date.getHours() + seperator2 + da ...
监听窗口的尺寸变化,动态刷新echarts图
window.onresize = function () { let chart = echarts.init(document.getElementById('id')) chart.resize()}
fileinput插件获取不到手动拖拽的文件对象的问题
var frame;$("#add_file").fileinput({ language: 'zh', //中文 uploadUrl: '/' + url + '/uploadFile', showUpload: false, //是否显示上传按钮 showCaption: false, //不显示文字表述 uploadAsync: true, //采用同步上传 removeFromPreviewOnError: true, //当文件不符合规则,就不显示预览 dropZoneEnabled: true, dropZoneTitle: '拖拽文件到这里 …<br>只支持单文件上传', maxFileCount: 100, maxFileSize: 0, //单位为kb,如果为0表示不限制文件大小 uploadEx ...
关于堆叠属性stack的问题
多系列的柱状图 stack 如果是数字且越小,该系列的每根柱子越靠前;
但是如果 stack 为 0,那么该系列的每根柱子都会被放到最后;
这是一个需要注意的问题!!!!!!!!!
Linux下文档类型转PDF乱码解决方式
在 Linux 系统下进行文本类型转 PDF 时出现乱码。
解决方案:
安装 fontconfig
安装命令:
yum –y install fontconfig
在/usr/share/fonts 目录下新建一个目录 chinese
操作命令:
cd /usr/share/fonts
mkdir chinese
cd chinese
修改文件夹权限
操作命令:
chmod -R 755 /usr/share/fonts/chinese/
将本地字体上传至服务器
操作步骤:
将 C:\Windows\Fonts 目录下的字体拷贝到一个新建文件夹(因为文件夹权限无法直接上传,所以需要创建一个新建文件夹)
将需要的字体上传到服务器的/usr/share/fonts/chinese 目录下
安装 ttmkfdir
安装命令:
yum -y install ttmkfdir
ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir
修改 fonts.conf 配置文件
操作命令:
vi /etc/fonts/fonts.c ...
markLine或markArea在使用滚动条放大之后消失的问题
问题:水平的 markLine 或者 markArea 当使用 dataZoom 放大的时候。只要 markLine/markArea 不完全在当前缩放的范围内(有部分在)那么它们就会整体消失
解决方式:官方没有给出真正的解决方式。临时解决方式如下
监听滚动条的滚动,获得使用滚动条缩放 echarts 缩放后的范围(x 轴的最小值和最大值)。根据后台请求的 markLineData/markAreaData 重新计算边界。如果某个 markLine/markArea 的左侧边界小于缩放后的 x 轴左侧边界,那么就将它的左侧边界放大到 x 轴的左侧边界。右侧同理。替换掉原先的标记 series。
注意:重新 setOption()时,可以合并原先的 option(noMerge:false)。因为只是重绘 markLine/markArea,没必要销毁原先的所有组件,并重新创建新的组件。同时如果有内置滚动条的情况下,必须指定(silent:true)(不抛出事件),否则使用内置滚动条放大 echarts 后,每次左右平移只能移动一点点,因为只要移动就会进入到滚动条监听事件里,而监听事件 ...
vue组件公共模板
<template> <div></div></template><script>export default { name: 'index'}</script><style scoped></style>
vue自定义上传功能
export function importData(params) { return axios.post('/engineeringCar/importData', params, { headers: { 'Content-Type': 'multipart/form-data' } })}
<template> <div> <el-button @click="importData">导入</el-button> <input v-show="false" name="file" ref="selectFile" type="file" @change="changeFile" /> </div& ...
解决centos8下python命令失效的问题
执行
ln -s /usr/bin/python3.6 /usr/bin/python
参考地址
配置openOffice
下载 tar.gz 包。下载地址:http://www.openoffice.org/zh-cn/ (需要下载 rpm 格式的)
通过 xftp 上传到 linux 中。我的目录在/opt/openoffice 中
解压文件:tar -zxvf Apache_OpenOffice_4.1.6_Linux_x86-64_install-rpm_zh-CN.tar.gz,解压后进入 zh-CN 目录中。
cd RPMS/ 里面都是 rpm 文件,我们需要安装这些文件
安装 rpm 文件: rpm -ivh *.rpm
进入 desktop-integration/目录:cd desktop-integration/
安装 openoffice:rpm -ivh openoffice4.1.6-redhat-menus-4.1.6-9790.noarch.rpm
安装成功后会在/opt 下出现一个 openoffice4 文件。
启动服务
/opt/openoffice4/program/soffice -headless -accept="socket,host=127.0 ...
局部导入css
<template> <div></div></template><script>export default { name: 'index'}</script><style scoped>@import '~@/assets/css/single_block.css';</style>