我有一种情况,我想确认当页面获得焦点时仍允许用户编辑页面。这将阻止他们在一个选项卡中放弃编辑,然后返回到原始选项卡中的编辑,或放弃编辑,然后使用浏览器BACK按钮返回到他们仍然可以编辑的页面。 window.onfocus在IE,FF和Safari中完美适用于此,但在Chrome中则不行。它是否正确?我错过了一些明显的东西吗有解决方法吗?以下是适用于IE,FF和Safari的代码:
$(window).bind('focus', function() {
$.getJSON("do_check.php", {id: 'foo'}, function(data){
if (! data.SUCCESS) {
$("#not_editor_dialog").dialog('open');
}
});
});
请注意,上面使用jQuery绑定事件,但Chrome中的jQuery-less版本也失败了:
window.onfocus = function() {
etc.
};
谢谢!
答案 0 :(得分:0)
在Chrome中为我工作。
示例: http://jsfiddle.net/KuZSu/(点击右下方的面板进行对焦)
$(window).bind('focus', function() {
$('body').append('focused<br>');
});
如果getJSON()
请求对您不起作用,可能是因为当您从文件系统托管页面时,Chrome在发出AJAX请求方面存在安全问题。
请参阅此问题:Problems with jQuery getJSON using local files in Chrome
该页面评论中提供的解决方案来自 Nick Craver :“尝试使用--disable-web-security通过命令行启动chrome并查看它是否有效?”< / em>的
答案 1 :(得分:0)
以上都不适用。他们只是开火太多次了。
我相信这也是一种方法:
var focused = false;
$(window).bind('focus', function() {
if (!focused ) {
// *
// * Do stuff on focus here
// *
focused = true;
}
});
$(window).bind('blur', function() {
if ( focused ) {
focused = false;
}
} );
也应该能够没有jQuery!