我有一个奇怪的问题。当我单击 IE7 中的链接时,窗口最小化。它似乎只是页面上链接的一个子集。它也不会始终以相同的链接发生,并且因计算机而异。
示例链接文本:
<a hidefocus="on" href="#" tabindex="1"><span unselectable="on" id="extdd-102">Canadian Legislation</span></a>
任何人以前见过这个或知道可能是什么原因造成的吗?
我有一个奇怪的问题。当我单击 IE7 中的链接时,窗口最小化。它似乎只是页面上链接的一个子集。它也不会始终以相同的链接发生,并且因计算机而异。
示例链接文本:
<a hidefocus="on" href="#" tabindex="1"><span unselectable="on" id="extdd-102">Canadian Legislation</span></a>
任何人以前见过这个或知道可能是什么原因造成的吗?
终于想通了。它实际上是导致问题的自定义 JavaScript 点击处理程序。
我的点击处理程序正在调用activeElement.blur();
当前的活动元素(以便在元素被销毁时触发与模糊相关的事件)。
问题出在 IE 中,如果您对任何不是 INPUT 的内容调用 blur,它会最小化窗口。
我在 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() 函数
当我使用模糊解决方法使占位符属性在 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();});
}
});
IE 有问题,因此您可以通过删除“tabindex”进行故障排除。如果这不起作用,请尝试删除“无法选择”,然后删除“hideonfocus”。“Hideonfocus”听起来很奇怪。尝试先删除它。您是否有任何与 IE 交互的第三方程序或插件?它可以在不同的计算机上运行吗?