2010-08-27 33 views
7

我有奇怪的问题。当我点击IE7中的链接时,窗口最小化。它似乎只是页面上链接的一个子集。它也不会始终发生在同一个链接上,并且因计算机而异。当链接被点击时,IE随机最小化

例如链接文本:
<a hidefocus="on" href="#" tabindex="1"><span unselectable="on" id="extdd-102">Canadian Legislation</span></a>

没有人见过这个或有任何想法可能造成的呢?

回答

15

终于搞明白了。它实际上是定制的JavaScript点击处理程序,导致问题

我的点击处理程序在当前活动元素上调用activeElement.blur();(这样当元素被销毁时,与模糊相关的事件被触发)。

问题出在IE中,如果你对任何不是INPUT的模糊调用,它会最小化窗口。

+2

这个模糊()函数调用是第一个谷歌响应,我得到了同样的问题,但解决方案是不一样的。当你试图模糊一个隐藏的输入时,IE似乎完全一样。或者是一个未附加的输入。 – Magus 2012-12-03 17:20:57

+2

是恨IE的另一个原因! – geedubb 2013-06-10 14:47:55

+0

这是关于世界上称为IE的最好工具的逻辑。 :-P在2015年阅读本文时,请停止使用和开发IE 7,8和9,并且最重要的是:不要试图在旧版软件中修复错误,以使您的客户受到欢迎。请不要为了更好的互联网世界而做。 – Codebeat 2015-04-14 05:35:02

0

IE是越野车,所以你可以通过删除“tabindex”来排除故障。如果这不起作用,请尝试删除“不可选择”,然后“隐藏焦点”。 “Hideonfocus”听起来很奇怪。尝试先删除。你有任何第三方程序或插件与IE交互?它在另一台计算机上工作吗?

0

这发生在我使用模糊解决方法获取占位符属性以在IE8上工作时。 在解决方法中,我应该调用blur(),导致浏览器模糊(最小化为托盘)。 的解决方案是使用:

$.each($('[placeholder]'), function(i,item){ item.blur();}); 

它仅是具体叫什么模糊的。

完整的占位符的解决方法是:

$('[placeholder]').focus(function() { 
    var input = $(this); 
    if (input.val() === input.attr('placeholder')) { 
     input.val(''); 
     input.removeClass('placeholder'); 
    } 
}).blur(function() { 
    var input = $(this); 
    if (input.val() === '' || input.val() == input.attr('placeholder')) { 
     input.addClass('placeholder'); 
     input.val(input.attr('placeholder')); 
    } 
}).blur(); 

$(window).on('load', function() { 
    if ($('[placeholder]').length){ 
    $.each($('[placeholder]'), function(i, item){item.blur();}); 
    } 
}); 
4

我对Internet Explorer中的同一个问题10

  • 的Internet Explorer 10测试行为:

此问题只发生在你调用document.body元素的blur()函数。

问题可以在您的浏览器控制台中简单执行

 document.body.blur()
进行重现。

  • 在这个问题上发生了常见的场景:

document.activeElement.blur()函数调用是在document.activeElement.blur的第一次调用后出现,因为这个问题最常见的场景( )body元素将成为activeElement,随后调用document.activeElement.blur()将调用body元素上的模糊。

  • 解决方案:

避免document.body的。模糊()函数调用,如果您有jQuery的,你可以介绍这个简单的逻辑

 $(yourObj).is('body')

检查,如果你的目标是body元素,以避免它

+0

伟大..非常有用! – Xstian 2015-04-07 13:49:42