IE8 select 动态下拉遇到的问题

发生背景:经QC测试程序一直没问题,到客户测试竟然出现了下拉窗口失效.

检查发现客户用的IE ,360 浏览器都出现一样的问题,据说360是引用IE的核心.

看下IE版本是 8的.....  开发和QC都是11版本的...

经过一阵和度娘互动找到了下面原因

1.IE8不支持 onchanged 事件.    

解决:使用 onclick 事件代替 

也有说用JQ的 $('#id').change 但是不知道为什么也无效

2.IE8 对select增加option使用 appendChild方法 支持有问题.

网上说要 改 闭合.  也没个准确的方法.

原来:(IE11没问题)

var newNode = document.createElement("option");
var newNode.value = '123';
var newNode.text = '张三';
document.getElementById('select_id').appendChild(newNode);

改为:

var newNode.value = '123';
var newNode.text = '张三';

document.getElementById("keyvalue").options.add(new Option(text,value));  

 

删除  option 

3.IE 和 其他浏览器 也有不同

解决:

3.1.先判断浏览器

function BrowserType(){
//debugger;
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器
var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器
var isEdge = userAgent.indexOf("Windows NT") > -1&&userAgent.indexOf("Trident")>-1 && !isIE; //判断是否IE的Edge浏览器
var isFF = userAgent.indexOf("Firefox") > -1; //判断是否Firefox浏览器
var isSafari = userAgent.indexOf("Safari") > -1 && userAgent.indexOf("Chrome") == -1; //判断是否Safari浏览器
var isChrome = userAgent.indexOf("Chrome") > -1 && userAgent.indexOf("Safari") > -1; //判断Chrome浏览器

if (isIE||isEdge) { return "IE";}
if (isFF) { return "FF";}
if (isOpera) { return "Opera";}
if (isSafari) { return "Safari";}
if (isChrome) { return "Chrome";}
//if (isEdge) { return "Edge";};
}

3.2.删除

//根据SELECT的id 移除选中标签的内容
function removeData(id) {
var childs = document.getElementById(id).childNodes;
for (var i = childs.length - 1; i >= 0; i--) {
if (childs[i].selected) {
if(BrowserType()=='IE'){
childs[i].removeNode(true);
}else{
//其他浏览器.
childs[i].remove();
}
}
}
}

如有更好建议请留言,谢谢

转载于:https://www.cnblogs.com/orac/p/7879429.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/415258.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cesium 设置地球默认区域为中国 一键返回默认区域

直接上代码啦 Cesium.Camera.DEFAULT_VIEW_RECTANGLE Cesium.Rectangle.fromDegrees(90, -20, 110, 90); const viewer new Cesium.Viewer(cesiumContainer, { selectionIndicator: false,infoBox: false,animation: false,baseLayerPicker: false,timeline: false,geocoder…

Spring boot Tomcat配置

来自: https://www.cnblogs.com/a8457013/p/7687764.html转载于:https://www.cnblogs.com/eason-d/p/7884307.html

js 快捷键

直接上代码 document.onkeydown onKeyDown; function onKeyDown() {if (window.event.ctrlKey && (window.event.keyCode 69)) {alert("ctrle");} }键码值如下 字母和数字键的键码值(keyCode)按键键码按键键码按键键码按键键码A65J74S83149B66K75T84250C…

Android 属性动画ObjectAnimator使用demo,组合动画

//第一个参数:指定执行动画的控件,第二个参数:指定控件的属性,第三个参数是可变长参数 public static ObjectAnimator ofFloat(Object target, String propertyName, float... values) 动画过程监听 animator2.addUpdateListen…

清除输入框缓存数据

如果不想让浏览器缓存input的值&#xff0c;有2种方法&#xff1a; 方法一&#xff1a; <input type"text" autocomplete"off" name"test" /> 方法二&#xff1a; <form action"#" autocomplete"off"><inpu…

Android 自定义操作成功的loading动画

1、res---->values文件夹下添加文件attrs.xml详情如下&#xff1a; <?xml version"1.0" encoding"utf-8"?> <resources><declare-styleable name"SuccessView"><attr name"svStrokeColor" format"col…

cesium的clock开始,结束,控制速率

开始 viewer.clock.shouldAnimate true; 结束 window.viewer.clock.shouldAnimate false;速率调整 viewer.clock.multiplier 8;

Android 下载进度条, 自定义加载进度条,loading动画

1、自定义loadingline动画 /*** 作者&#xff1a;created by meixi* 邮箱&#xff1a;13164716840163.com* 日期&#xff1a;2018/9/6 10*/public class LoadingLine extends View {private Paint paint;private Paint backPaint;private Paint textPaint;private boolean ini…

eslint airbnb 不允许尾随逗号

我使用的是airbnb规则进行代码eslint。 会出现保存后&#xff0c;数组或者对象最后一个元素尾随逗号。 此时需要在.eslintrc.js中加入下面代码即可 "comma-dangle": ["error", {"arrays": "never","objects": "never…

我的物联网项目(十二) 单体应用架构不行?

单体应用架构在创业型项目里面是非常合适的&#xff0c;毕竟它主要的担当还是在验证创业模式以及迅速功能实现&#xff0c;所以它从开发到部署&#xff0c;在少量开发人员的基础上能非常减少成本&#xff0c;主要是门槛低&#xff0c;开发效率也非常高。到目前为此&#xff0c;…

Android listview优化以及listview混合itemview

listView (ListView) findViewById(R.id.listview); mAdapter new VideoListAdapter(this); listView.setAdapter(mAdapter); 主要adapter public class VideoListAdapter extends BaseAdapter {int[] viewtype {0, 0, 0, 1, 0, 0, 0, 1, 0, 0};//1 jcvd, 0 textView。主要…

vue项目中assets与static的区别

在使用vue脚手架生成的目录中&#xff0c;会有一个src/assets还有一个static。 两者都可以用来放一些静态文件。那有什么区别呢&#xff1f; static中的文件不会被webpack打包&#xff0c;文件被复制到dist/static assets中的文件会经过 webpack 打包&#xff0c;重新编译。…

oracle 用户管理

一、创建用户概述&#xff1a;在oracle中要创建一个新的用户使用create user语句&#xff0c;一般是具有dba(数据库管理员)的权限才能使用。create user 用户名 identified by 密码; 注意&#xff1a;oracle有个毛病&#xff0c;密码必须以字母开头&#xff0c;如果以数字开头&…

Android 获取当前的时间。年月日,时分秒,星期几

SimpleDateFormat alldate new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//获取日期时间 SimpleDateFormat year new SimpleDateFormat("yyyy");//获取年份SimpleDateFormat month new SimpleDateFormat("MM");//获取月份SimpleDateFormat m…