我在网上搜的脚本,以前应用时没有问题,现在IE8以及升级后的360都出现以下问题,
1、下拉框在鼠标滑过时,如果内容长度非常长,会把IE撑开。
2、附上脚本:
function FixWidth(selectObj) {
    //创建一个新的select
    var newSelectObj = document.createElement("select");
    newSelectObj = selectObj.cloneNode(true);
    newSelectObj.selectedIndex = selectObj.selectedIndex;
    newSelectObj.onmouseover = null;    var e = selectObj;
    var absTop = e.offsetTop;
    var absLeft = e.offsetLeft;
    while (e = e.offsetParent) {
        absTop += e.offsetTop;
        absLeft += e.offsetLeft;
    }    var len = selectObj.options.length;
    var wid = "80px";
    var text1;
    for (var i = 0; i < len; i++) {
        text1 = selectObj.options[i].text;
        if (fucCheckLength(text1) > 7) {
            wid = "auto";
            break;
        }
    }    with (newSelectObj.style) {
        position = "absolute";
        top = absTop + "px";
        left = absLeft + "px";
        var w = parseInt(width.substring(0, 2));
        width = wid;
    }    var rollback = function() {
        RollbackWidth(selectObj, newSelectObj);
    };    if (window.addEventListener) {
        newSelectObj.addEventListener("blur", rollback, false);
        newSelectObj.addEventListener("change", rollback, false);
    }
    else {
        newSelectObj.attachEvent("onblur", rollback);
        newSelectObj.attachEvent("onchange", rollback);
    }
    selectObj.style.visibility = "hidden";
    document.body.appendChild(newSelectObj);
    newSelectObj.focus();
}function RollbackWidth(selectObj, newSelectObj) {
    selectObj.selectedIndex = newSelectObj.selectedIndex;
    selectObj.style.visibility = "visible";
    document.body.removeChild(newSelectObj);
}function fucCheckLength(strTemp) {
    var i, sum;
    sum = 0;
    for (i = 0; i < strTemp.length; i++) {
        if ((strTemp.charCodeAt(i) >= 0) && (strTemp.charCodeAt(i) <= 255))
            sum = sum + 1;
        else
            sum = sum + 2;
    }
    return sum;
} 3、我分数不多,全给了,望大虾们指点~~~

解决方案 »

  1.   

    5、附原始JS脚本,好像没啥太大改变。都是从网上copy的。
    function FixWidth(selectObj) {
        // 显示下拉框隐藏部分内容
        var newSelectObj = document.createElement("select");
        newSelectObj = selectObj.cloneNode(true);
        newSelectObj.selectedIndex = selectObj.selectedIndex;
        newSelectObj.id = "newSelectObj";    var e = selectObj;
        var absTop = e.offsetTop;
        var absLeft = e.offsetLeft;
        while (e = e.offsetParent) {
            absTop += e.offsetTop;
            absLeft += e.offsetLeft;
        }    with (newSelectObj.style) {
            position = "absolute";
            top = absTop + "px";
            left = absLeft + "px";
            width = "auto";    }    var rollback = function() { RollbackWidth(selectObj, newSelectObj); };    if (window.addEventListener) {
            newSelectObj.addEventListener("blur", rollback, false);
            newSelectObj.addEventListener("change", rollback, false);
        }
        else {
            newSelectObj.attachEvent("onblur", rollback);
            newSelectObj.attachEvent("onchange", rollback);
        }    selectObj.style.visibility = "hidden";
        document.body.appendChild(newSelectObj);    var newDiv = document.createElement("divselect");
        with (newDiv.style) {
            width = "0px";
            height = "0px";
            position = "absolute";
            top = (absTop - 10) + "px";
            left = (absLeft - 10) + "px";
            width = newSelectObj.offsetWidth + 20;
            height = newSelectObj.offsetHeight + 20; ;
            background = "transparent";    }    newSelectObj.focus();
        var enterSel = "false";
        var enter = function() { enterSel = enterSelect(); };
        newSelectObj.onmouseover = enter;    var leavDiv = "false";
        var leave = function() { leavDiv = leaveNewDiv(selectObj, newSelectObj, newDiv, enterSel); };
        newDiv.onmouseleave = leave;
    }function RollbackWidth(selectObj, newSelectObj) {
        selectObj.selectedIndex = newSelectObj.selectedIndex;
        selectObj.style.visibility = "visible";
        if (document.getElementById("newSelectObj") != null) {
            document.body.removeChild(newSelectObj);
        }
    }function removeNewDiv(newDiv) {
        document.body.removeChild(newDiv);
    }function enterSelect() {
        return "true";
    }function leaveNewDiv(selectObj, newSelectObj, newDiv, enterSel) {
        if (enterSel == "true") {
            RollbackWidth(selectObj, newSelectObj);
            removeNewDiv(newDiv);
    }
    }