Chrome特定的Javascript范围问题

时间:2013-12-30 19:58:38

标签: javascript asp.net google-chrome

我在ASPX页面的头部定义了一个javascript函数:

<script type="text/javascript" >
    function bdScheduler() {
                var CanRun = '<%= ScheduleCheck() %>';
                if ('Success' == CanRun) {
                    bcal = window.open('ProjSchedBckwdCalc.aspx?po_rec=<%= lblpodate_R.Text %>', '', 'width=650px, height=750px');
                } else {
                    alert(CanRun);
                }
            }
</script>

ScheduleCheck()是我后面的代码中定义的函数,用于检查依赖性并返回一个字符串,指示页面'ProjSchedBckwdCalc.aspx'是否可以完成它的工作。如果“成功”,则我们在所需位置弹出一个窗口,从当前页面上的标签传递一个值。否则,我们会提醒我们从ScheduleCheck()收到的消息。

我从常规锚标记的onclick事件中调用它:

<a href="#" onclick="bdScheduler();" >Backward Scheduler</a>

我发布的代码在我当前和之前的几个版本的Firefox,Chrome和IE中都有用,但我收到的用户报告说该按钮什么都不做。我检查了一下,他们都使用Chrome(与我的测试机器上的版本相同),控制台显示浏览器没有看到bdScheduler()

我的问题分为两个部分:为什么某些Chrome安装在相同的版本中处理这种情况有所不同,为什么我可以更改它以使其不仅表现一致,而且运行所需的功能并检查它是什么时候?

编辑:渲染代码:

    function bdScheduler() {
                var CanRun = 'Success';
                if ('Success' == CanRun) {
                    bcal = window.open('ProjSchedBckwdCalc.aspx?po_rec=12/23/2013', '', 'width=650px, height=750px');
                } else {
                    alert(CanRun);
                }
            }

1 个答案:

答案 0 :(得分:0)

您的代码(http://jsfiddle.net/N3Unt/6/)没有任何问题,我已经在Chrome上测试了三台不同的Mac和Windows 7&amp; 8以及FF / IE(如果可用)。

您必须做的是确保加载所有代码并且不缓存任何内容。做“onclicks”的正确和更现代的方法是使用称为事件处理的解耦模式

document.addEventListener('DOMContentLoaded', function() {
    var link = document.getElementById('yourOnClickLink');

    // onClick's logic:
    link.addEventListener('click', function() {
        var CanRun = '<%= ScheduleCheck() %>';
        if ('Success' == CanRun) {
            // Warning, bcal becomes global using this code (ANTIPATTERN)
            bcal = window.open('ProjSchedBckwdCalc.aspx?po_rec=12/23/2013', '', 'width=650px, height=750px');
        } else {
            alert(CanRun);
        }        
    });
});

这可确保正确加载所有内容,并且您的页面可以异步加载。为什么不将任何连接到eventhandler的链接变灰并在加载DOM时启用它,非常有趣啊:)