使用JQuery更改IE中的属性;仅在调试时应用更改

时间:2016-05-25 06:33:39

标签: javascript jquery internet-explorer

我有一个简单的脚本,它从一个单独的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时,我们不会检查chkPeriodeVanTotddlPeriodeVanddlPeriodeTot应该被禁用,只读和具有不同的背景颜色。

这在其他浏览器中工作正常(当然),但IE对此有不同看法,我不知道为什么。

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

修改

我发现设置断点并不是必需的。只需打开F12开发人员工具窗口即可。一切都正确加载。 关闭F12并刷新再次打破它......

1 个答案:

答案 0 :(得分:0)

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

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

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

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