我在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);
}
}
答案 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时启用它,非常有趣啊:)