DOM重绘对focus的影响
在处理获取焦点时一直不能获取到。
搜索了下资料是因为 当DOM的变化影响了元素的几何属性(宽和高),浏览器需要重新计算元素的几何属性,同样其他元素的几何属性和位置也会因此受到影响。
重排:浏览器会使渲染树中受到影响的部分失效,并重新构造渲染树。
重绘:完成重排后,浏览器会重新绘制受影响的部分到屏幕中。
重排何时发生:
- 添加或删除可见的DOM元素
- 元素位置的改变
- 元素尺寸改变
- 内容改变
- 页面渲染器初始化
- 浏览器窗口尺寸的改变
参考http://zhangyaochun.iteye.com/blog/1681641
在原来代码里使用了innreHTML来改变原有内容,我将它改为使用dom来进行操作
//要改变的内容
window.onload=function(){
var supcodea = document.createElement("p");
var supcode_text = document.createTextNode("*");
supcodea.appendChild(supcode_text);
document.getElementById("msg_code").appendChild(supcodea);
var supnamea = document.createElement("p");
var supname_text = document.createTextNode("*");
supnamea.appendChild(supname_text);
document.getElementById("msg_name").appendChild(supnamea);
}
//改变前后
function displayAjaxLoading (element,msg) {
while (element.hasChildNodes()) {
element.removeChild(element.lastChild);
}
var content = document.createElement('p');
var content_text = document.createTextNode(msg);
content.appendChild(content_text);
element.appendChild(content);
} //应用改变
var flag=false;
var supCode = supSaveInfo.supcode;
var supName = supSaveInfo.supname;
switch(true) {
case supCode == "" || !supCode:
var msg_codes = document.getElementById("msg_code");
displayAjaxLoading(msg_codes,"请输入供应商代码");
document.getElementById("supcode").focus();
flag=true;
break;
default:
var msg_codes = document.getElementById("msg_code");
displayAjaxLoading(msg_codes,"*");
}
switch(true) {
case supName == "" || !supName:
var msg_codes = document.getElementById("msg_name");
displayAjaxLoading(msg_codes,"请输入供应商名称");
document.getElementById("supname").focus();
flag=true;
break;
default:
var msg_codes = document.getElementById("msg_name");
displayAjaxLoading(msg_codes,"*");
}
switch(true) {
case (supCode == "" || !supCode) && (supName == "" || !supName):
displayAjaxLoading(msg_codes,"请输入供应商代码");
displayAjaxLoading(msg_codes,"请输入供应商名称");
document.getElementById("supcode").focus();
flag=true;
break;
default:
break;
}
/*if(supSaveInfo.supcode==""||!supSaveInfo.supcode){
var msg_codes = document.getElementById("msg_code");
displayAjaxLoading(msg_codes,"请输入供应商代码");
document.getElementById("supcode").focus();
flag=true;
return;
}else{
var msg_codes = document.getElementById("msg_code");
displayAjaxLoading(msg_codes,"*");
}
if(supSaveInfo.supname==""||!supSaveInfo.supname){
var msg_codes = document.getElementById("msg_name");
displayAjaxLoading(msg_codes,"请输入供应商名称");
document.getElementById("supname").focus();
flag=true;
return;
}else{
var msg_codes = document.getElementById("msg_name");
displayAjaxLoading(msg_codes,"*");
}*/
if(flag){
}else
addSave(); };
HTML
<tr style="height:28px">
<td align="right" width="130px" height=20px><label class="Validform_label"> 供应商代码:</label></td>
<td align="right" class="value" width="120px"><input class="inputxt" style="width: 180px; height:20px" id="supcode" name="supcode""></input></td>
<td id="msg_code" style="color:red;width:300px"></td>
</tr> <tr style="height:28px">
<td align="right" width="130px" height=20px><label class="Validform_label">供应商名称:</label></td>
<td align="right" class="value" width="120px"><input class="inputxt" style="width: 180px; height:20px" id="supname" name="supname""></input></td>
<td id="msg_name" style="color:red;width:300px"></font></td>
</tr>
这样就可以了。
DOM重绘对focus的影响的更多相关文章
- Dom 重绘重排
https://juejin.im/entry/590801780ce46300617c89b8 DOM 重绘重排
- js 性能篇--dom 重绘 重排 节流
浏览器下载完页面中的所有组件----HTML标记,Js,CSS,图片等之后会解析并生成两个内部数据结构: DOM树 -------- 表示页面结构 渲染树 -------- 表示DOM节点如何显 ...
- 浏览器的重绘(repaints)与重排(reflows)
转:http://www.css88.com/archives/4991#more-4991 在项目的交互或视觉评审中,前端同学常常会对一些交互效果质疑,提出这样做不好那样做不好.主要原因是这些效果通 ...
- 浏览器的重绘repaints与重排reflows深入分析
重绘是一个元素外观的改变所触发的浏览器行为,浏览器会根据元素的新属性重新绘制,使元素呈现新的外观,接下来将详细介绍,需要了解的朋友可以参考下: 在项目的交互或视觉评审中,前端同学常常会对一些交互效果质 ...
- 回流&重绘
浏览器加载解析页面:把HTML解析为DOM树,解析CSS生成CSSOM树,HTML DOM树和CSSOM树组合构建render树,首次触发回流和重绘后将页面结构信息发送给GPU进行绘制渲染. 回流:当 ...
- 关于DOM的操作以及性能优化问题-重绘重排
写在前面: 大家都知道DOM的操作很昂贵. 然后贵在什么地方呢? 一.访问DOM元素 二.修改DOM引起的重绘重排 一.访问DOM 像书上的比喻:把DOM和JavaScript(这里指ECMScri ...
- JS性能--DOM编程之重排与重绘
浏览器下载完页面中的所有组件----HTML标记,Js,CSS,图片等之后会解析并生成两个内部数据结构: DOM树 -------- 表示页面结构 渲染树 -------- 表示DOM节点如何显 ...
- 160826、浏览器渲染页面过程描述,DOM编程技巧以及重排和重绘
一.浏览器渲染页过程描述 1.浏览器解析html源码,然后创建一个DOM树. 在DOM树中,每一个HTML标签都有一个对应的节点(元素节点),并且每一个文本也都有一个对应的节点(文本节点). DO ...
- 浏览器渲染页面过程描述,DOM编程技巧以及重排和重绘。
一.浏览器渲染页过程描述 1.浏览器解析html源码,然后创建一个DOM树. 在DOM树中,每一个HTML标签都有一个对应的节点(元素节点),并且每一个文本也都有一个对应的节点(文本节点). DOM树 ...
随机推荐
- js 时间YYYY-MM-DD转换为YYYY/MM/DD 自定义函数格式
<script type="text/javascript"> window.onload = function () { va ...
- FFMPEG视音频解码【一】
多媒体的时代,得多了解点编解码的技术才行,而ffmpeg为我们提供了一系列多媒体编解码的接口,如何用好这些接口达到自己所需要的目的,这也是一门重要的学问. 要是了解得不够,总是会遇到一堆又一堆问题:网 ...
- respondsToSelector的相关使用
-(BOOL) isKindOfClass: classObj 用来判断是否是某个类或其子类的实例 -(BOOL) isMemberOfClass: classObj 用来判断是否是某个类的实例 -( ...
- oracle 两个时间相减
oracle 两个时间相减默认的是天数 oracle 两个时间相减默认的是天数*24 为相差的小时数 oracle 两个时间相减默认的是天数*24*60 为相差的分钟数 oracle 两个时间相减默认 ...
- Autorelease Pool-自动释放池
Autorelease Pool是Objective-C中的内存管理方式之一,它与线程和NSAutorelease类有关.每一个线程都拥有自己的Autorelease Pool栈,这个栈底层是由双向链 ...
- JAVA不经过Catch(Exception e)直接到finally或者退出原因
今天遇到一个很奇葩的问题!在写Hadoop程序的时候!new一个对象!程序直接跑到finally代码块里面去了!Catch里面的Exception也没有执行. Configuration config ...
- oracle 查询重复数据
SELECT * FROM td_attrval_group WHERE parent_attrval_id IN(SELECT parent_attrval_id FROM td_attrval_g ...
- 自动运行native2ascii 命令的Bat文件的编写
使用eclipse开发,对于.properties文件的国际化,如果不使用插件对文件进行转码,则需要使用native2ascii命令自行对文件进行转码. 为了更方面的执行此操作,我将该 ...
- 【04】基础:将采集结果转成Excel
前面的教程说了,数据抓取完毕之后,数据以xml格式的形式存储在本地文件夹中. 下面简单地说一下如何将保存在本地的XML文件转成Excel格式. 第一步:压缩文件 进入本地DataScraperWork ...
- Can you find it?(hdu 2141 二分查找)
Can you find it? Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/10000 K (Java/Others ...