Javascript无法在IE中运行

时间:2012-12-28 03:58:47

标签: javascript

我在IE中遇到自动搜索javascript的问题。它在Firefox中正常工作。要了解我在说什么,请访问:

然后开始在搜索栏中输入单词cart。你会看到它在Firefox下面排成一行但不在IE中。任何帮助将不胜感激!

以下是代码:

<script type="text/javascript">
function findPos(obj) {
    var curleft = curtop = 0;
    if (obj.offsetParent) {
        do {
            curleft += obj.offsetLeft;
            curtop += obj.offsetTop;
        } while (obj = obj.offsetParent);
    }
    return curleft.toString() + ' ' + curtop.toString();
}

(function() {
    var nxt_host = (("https:" == document.location.protocol) ? "https://" : "http://");
    nxt_host += "vector.nextopiasoftware.com/";
    document.write(unescape("%3C") + "script src='" + nxt_host + "nxt-ac-js-1.3-min.js' type='text/javascript'" + unescape("%3E%3C/script%3E"));
    document.write(unescape("%3C") + "link rel='stylesheet' type='text/css' href='" + nxt_host + "ac-1.3.css'" + unescape("%3E"));
})();
</script>

<script type="text/javascript">
(function() {
    var jnxtac = jQuery.noConflict(true);
    jnxtac("#myInput").css('z-index', '20000');
    jnxtac("#myInput").autocomplete({
        cid: '80c356394c27c27aacf41c465e455f7d'
    });
})();

if (navigator.appVersion.indexOf("MSIE") != -1) {
    var offsets = findPos(document.getElementById('search')).split(' ');
    var acStyleEl = document.createElement('style');
    var acStyleCss = '.ui-autocomplete {position:absolute !important;left: ' + (parseInt(offsets[0]) + 200) + 'px !important; top: ' + (parseInt(offsets[1]) + 24) + 'px !important;}';
    var bodyEl = document.getElementsByTagName('body')[0];
    acStyleEl.setAttribute("type", "text/css");
    acStyleEl.setAttribute("id", "acCssElement");
    bodyEl.appendChild(acStyleEl);
    acStyleEl.styleSheet.cssText = acStyleCss;
}​
</script>

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

正如其他评论所说,这不是很好的代码,可以重写,以更好地工作,更清晰。 但是,我说我认为你提到的具体问题,它在IE中不起作用是因为有一个if语句读取浏览器代理(导航器)字符串,如果它包含'MSIE',它不显示你的菜单。 / p>

if (navigator.appVersion.indexOf("MSIE") != -1) {

此行获取浏览器代理字符串,如果未包含“MSIE”(navigator.appVersion.indexOf()将返回字符串开头的索引,如果未找到字符串则返回“-1”)执行函数中的剩余代码:

if (navigator.appVersion.indexOf("MSIE") != -1) {
  var offsets  = findPos(document.getElementById('search')).split(' ');
  var acStyleEl = document.createElement('style');
  var acStyleCss = '.ui-autocomplete {position:absolute !important;left: ' + (parseInt(offsets[0]) +200) + 'px !important; top: ' + (parseInt(offsets[1]) + 24) + 'px !important;}';
  var bodyEl = document.getElementsByTagName('body')[0];
  acStyleEl.setAttribute("type", "text/css");
  acStyleEl.setAttribute("id", "acCssElement");
  bodyEl.appendChild(acStyleEl);
  acStyleEl.styleSheet.cssText = acStyleCss;
}

代码很复杂,虽然我不肯定if语句中的代码是什么,但它不会在IE中执行,这听起来像你的问题...删除if语句,你应该没问题。

答案 1 :(得分:0)

我认为这不是css和javascript的问题,在IE中你的脚本是破坏的,因为样式混乱,combox div向右移动。

d=c.width("").width()

这是破解的代码。

您是否调试了应用程序或更改了此内容。