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();
}
}
}
}

如有更好建議請留言,謝謝


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM