javascript - Chrome 特定的 Javascript 范围问题

标签 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() 返回的消息。

我从常规 anchor 标记的 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);
                }
            }

最佳答案

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

您始终必须做的是确保加载所有代码并且不缓存任何内容。执行“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);
        }        
    });
});

这可以确保所有内容都正确加载,并且您的页面可以异步加载。为什么不灰显任何连接到事件处理程序的链接并在加载 DOM 时启用它,啊,太有趣了:)

关于javascript - Chrome 特定的 Javascript 范围问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20846564/

相关文章:

javascript - mxGraph - 如果 mxCell 超过默认大小,如何自动将其调整为内容宽度

javascript - 使用 Javascript 将 .srt 转换为 .webvtt

android - FCM(Firebase 云消息传递)使用 Asp.Net 推送通知

javascript - 循环函数javascript中未定义的数组

javascript - ES6 包括但不区分大小写

c# - 在自定义控件的嵌套 DropDownList 中保存 ViewState

c# - 将 displayname 属性作为参数传递

javascript - 使用 Chrome 扩展程序注入(inject) javascript 应该那么容易吗?

html - Chrome TD 高度

javascript - chrome.tabs.create/executeScript > 调用属于页面的函数