无法在 Chrome 中的控制代码执行过程中显示弹出窗口
Unable to show a pop-up in the middle of a control code execution in Chrome
我想在控件中执行代码时显示弹出窗口,但弹出窗口仅在执行结束时出现(所以当控制权再次移交给地图时?)
在 Firefox 中,这按预期工作,但在 Chrome 或 Edge 中没有。
代码:
rg.regioPrint = function(opt_options) {
this.options = options;
var element = document.createElement('div');
element.className = 'ol-unselectable ol-control rg-control-button';
var button = document.createElement('button');
element.appendChild(button);
var this_ = this;
button.onclick = function(e) {
this_.doPrint();
};
ol.control.Control.call(this, { element: element });
};
ol_inherits(rg.regioPrint, ol.control.Control);
rg.regioPrint.prototype.doPrint = function() {
// options.busyControl is a control that is added to the map earlier
// with map.addControl(ctl = new ....) and is working perfectly fine when
// called in other circumstances
this.options.busyControl.show();
// do some lengthy stuff
};
弹出窗口仅出现在 'lengthy stuff' 的末尾。
但是,在 FF 中,它有效!
我可以用另一种可能更好的方式实现 Chrome/Edge 吗?
谢谢你的帮助。
林德
Mike 的评论是解决方案。我将 'lengthy stuff' 包裹在超时中,这就解决了它。
我想在控件中执行代码时显示弹出窗口,但弹出窗口仅在执行结束时出现(所以当控制权再次移交给地图时?) 在 Firefox 中,这按预期工作,但在 Chrome 或 Edge 中没有。
代码:
rg.regioPrint = function(opt_options) {
this.options = options;
var element = document.createElement('div');
element.className = 'ol-unselectable ol-control rg-control-button';
var button = document.createElement('button');
element.appendChild(button);
var this_ = this;
button.onclick = function(e) {
this_.doPrint();
};
ol.control.Control.call(this, { element: element });
};
ol_inherits(rg.regioPrint, ol.control.Control);
rg.regioPrint.prototype.doPrint = function() {
// options.busyControl is a control that is added to the map earlier
// with map.addControl(ctl = new ....) and is working perfectly fine when
// called in other circumstances
this.options.busyControl.show();
// do some lengthy stuff
};
弹出窗口仅出现在 'lengthy stuff' 的末尾。 但是,在 FF 中,它有效! 我可以用另一种可能更好的方式实现 Chrome/Edge 吗? 谢谢你的帮助。 林德
Mike 的评论是解决方案。我将 'lengthy stuff' 包裹在超时中,这就解决了它。