【问题标题】:Changing properties in IE using JQuery; changes only applied when debugging使用 JQuery 在 IE 中更改属性;仅在调试时应用更改
【发布时间】:2016-09-22 14:28:26
【问题描述】:

我有一个从单独的 js 文件加载时运行的简单脚本。 设置是这样的:

    var ddlPeriodeVan = $('[id$=ddlPeriodeVan]');
    var ddlPeriodeTot = $('[id$=ddlPeriodeTot]');
    chkPeriodeVanTot = $('[id$=chkPeriodeVanTot]').length > 0 ? $('[id$=chkPeriodeVanTot]') : $('[id$=rbPeriodeVanTot]');
    var periodeBereik = { van: 'ddlPeriodeVan', tot: 'ddlPeriodeTot', err: 'ddlPeriode', chk: chkPeriodeVanTot, label: 'Periode' };
    if (ddlPeriodeVan.length > 0 && ddlPeriodeTot.length > 0) {
        if (chkPeriodeVanTot.length > 0) {
            chkPeriodeVanTot.change(periodeBereik, changedCheckNummerBereik);

            if (chkPeriodeVanTot.prop('checked')) { // checkbox aangevinkt, maak de waardevelden bewerkbaar
                ddlPeriodeVan.prop('disabled', false).prop('readonly', false).css('background-color', '#FFFFFF');
                ddlPeriodeTot.prop('disabled', false).prop('readonly', false).css('background-color', '#FFFFFF');
            } else { // Disable en readonly aanzetten, achtergrond blauw en tekst op (leeg indien textbox / defaultwaarde indien dropdown)
                // The debugger actually gets here and changes the properties correctly
                // When there is no breakpoint, the changes have no effect
                // When there is a breakpoint, the changes are made and remain visible
                ddlPeriodeVan.prop('disabled', true).prop('readonly', true).css('background-color', '#AACAF4');
                ddlPeriodeTot.prop('disabled', true).prop('readonly', true).css('background-color', '#AACAF4');
            }
        }

在初始 page_load 时,chkPeriodeVanTot 未被选中,ddlPeriodeVanddlPeriodeTot 应被禁用、只读且具有不同的背景颜色。

这在其他浏览器中运行良好(当然),但 IE 对此的看法不同,我不知道为什么。

奇怪的是,当我在 IE11 中开发者工具并在文件中设置断点时。断点被击中,代码 ddl 已按预期更改! IE 是否会在某处刷新 DOM,从而丢失所有更改?

编辑

我发现甚至没有必要设置断点。只需打开 F12 开发人员工具窗口就可以了。一切都正确加载。 关闭 F12 并刷新再次打破它......

【问题讨论】:

    标签: javascript jquery internet-explorer


    【解决方案1】:

    好的,我这里有一些微软的逻辑:

    在所有“现代”浏览器中,即使您没有打开调试器,也会创建 window.console。对于 IE,如果调试器关闭,window.console 为undefined

    一个您永远不会看到它被抛出的内部错误导致您的所有脚本停止执行...

    所以不要使用 window.console(你不应该在生产代码中)或在使用之前检查控制台是否未定义。

    【讨论】:

      猜你喜欢
      • 2020-06-15
      • 1970-01-01
      • 1970-01-01
      • 2016-01-09
      • 1970-01-01
      • 2018-02-04
      • 2011-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多