我在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>
任何帮助将不胜感激!
答案 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()
这是破解的代码。
您是否调试了应用程序或更改了此内容。