【问题标题】:Strange IE11 form fields bug after selecting from dropdown从下拉列表中选择后出现奇怪的 IE11 表单字段错误
【发布时间】:2014-05-11 14:47:06
【问题描述】:

我在 IE 11 中遇到了一个重大错误(Windows 7 上的最新版本 11.0.9600.16521)。在任何表单上,如果我打开选择下拉菜单,页面上的所有其他表单字段都会冻结。我可以通过调整窗口大小(导致重绘)来“解冻”它们。这似乎以任何形式发生过。

重现: 打开 IE 11.0.9600.16521 转至http://www.wikipedia.org/ 从语言下拉列表中选择任何语言

结果: 语言下拉菜单似乎没有在屏幕上更新 搜索框似乎被冻结 - 即专注于选择框并开始输入,但没有出现任何文本。但是,如果您调整窗口大小,表单字段会更新并恢复正常工作(直到您与另一个选择元素交互)

我在 Google 中找不到太多关于这个问题的信息,所以这可能只是我的设置所特有的。唯一听起来与我所经历的有点相似的是:http://connect.microsoft.com/IE/feedback/details/806679/ie-11-desktop-selecting-an-item-from-a-drop-down-list-on-a-webpage-causes-the-tab-to-crash。还有其他人可以重现吗?

【问题讨论】:

  • 对我来说没有发生。禁用所有附加组件。
  • 没有安装插件!

标签: html forms internet-explorer internet-explorer-11


【解决方案1】:

我在 IE11 中遇到了类似的问题,结果证明是对 SELECT-option 元素的 .text 属性进行了任何修改。我最终在这里找到了关于 stackoverflow 的“提示” How to fix IE select issue when dynamically changing options.

在我的情况下,我使用直接的 JavaScript,并且有这么多相互依赖的 SELECT 框必须想出一个通用的解决方案,所以我的解决方案是拦截 (defineGetter) 对任何 .text 的分配HTMLOptionElement 的属性,并设置一个 1 毫秒的计时器来执行添加元素和删除元素,如标题为“我有修复。我们必须添加和删除选项列表以触发 IE8 中的呈现”的引用帖子中。请注意对 IE8 的引用,至少从 IE7 开始,AFAIK IE 的 SELECT 框就有几个问题,可能更早。

所以我添加到我的一个全局脚本中的代码如下:

try { var IE11;  // IE10 and IE11 removed ActiveXObject from the window object but it can still be instantiated
    IE11 = new ActiveXObject('MSXML2.DOMDocument.6.0');
    IE11 = null;
    if (typeof(HTMLOptionElement) != "undefined") {
        try { HTMLOptionElement.prototype.__defineSetter__(
                                          'text',
                                          function(original) {
                                              return function(newValue) { var sel;
                                                                       original.call(this, newValue);
                                                                       if (!(sel=this.parentElement).fixIE) sel.fixIE = window.setTimeout(_fixIE_(sel), 1);
                                                                   }
                                                               }(HTMLOptionElement.prototype.__lookupSetter__('text')));
            } catch(e) {};
        }
    } catch(e) {}
}

//  IE11 broke SELECT boxes again, modifying any options .text attribute "freezes" the SELECT so it appears disabled
function _fixIE_(selBox) {
    return _fixIE_;
    function _fixIE_(){ var lc = selBox.options.length;
        selBox.options.add(new Option('',''));
        selBox.options.remove(lc);
        selBox.fixIE = undefined;
    }
}

菲尔

【讨论】:

  • 老兄,这是一个了不起的发现。我遇到了各种疯狂的错误,这似乎是罪魁祸首。现在接受 IE 告诉我我不能使用索引数据库?!在更改事件中:D。该死的微软...
【解决方案2】:
  1. 转到programs
  2. 然后widdcom文件夹
  3. 右键bttray
  4. compatibility
  5. 勾选run as admin
  6. 重启

【讨论】:

    【解决方案3】:

    我在戴尔 Windows 7 上的 IE 11 中遇到了同样的问题。

    正如您在链接中建议的那样,通过关闭 IE 中的硬件渲染已解决。

    【讨论】:

      猜你喜欢
      • 2022-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-11
      • 1970-01-01
      相关资源
      最近更新 更多