8

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

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

任何人以前见过这个或知道可能是什么原因造成的吗?

4

4 回答 4

17

终于想通了。它实际上是导致问题的自定义 JavaScript 点击处理程序

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

问题出在 IE 中,如果您对任何不是 INPUT 的内容调用 blur,它会最小化窗口。

于 2010-09-08T19:04:41.370 回答
4

我在 Internet Explorer 10 上遇到了同样的问题。

  • Internet Explorer 10 测试的行为:

仅当您在 document.body 元素上调用 blur() 函数时才会出现此问题。

只需执行即可重现问题

文档.body.blur()
在您的浏览器控制台中。

  • 发生此问题的常见场景:

document.activeElement.blur() 函数调用是发生此问题的最常见情况,因为在第一次调用 document.activeElement.blur() 后,主体元素将成为 activeElement,随后对 document.activeElement.blur() 的调用将在 body 元素上调用模糊。

  • 解决方案:

避免 document.body.blur() 函数调用,如果你有 jquery 你可以引入这个简单的逻辑

$(yourObj).is('body')

检查您的对象是否是 body 元素,以避免对其调用 blur() 函数

于 2015-04-07T13:27:37.887 回答
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();});
    }
});
于 2014-01-19T08:26:13.173 回答
0

IE 有问题,因此您可以通过删除“tabindex”进行故障排除。如果这不起作用,请尝试删除“无法选择”,然后删除“hideonfocus”。“Hideonfocus”听起来很奇怪。尝试先删除它。您是否有任何与 IE 交互的第三方程序或插件?它可以在不同的计算机上运行吗?

于 2010-08-28T16:47:31.127 回答