【发布时间】:2022-01-06 11:02:56
【问题描述】:
我试图让用户打开一个选项卡,以便在当前选项卡向服务器发出一些请求时继续让他使用系统。
所以我打开一个新标签并尝试使用$(window).load() 或$(window.document).ready() 在元素准备好时单击某些项目。使用大型服务器请求对其进行测试时,仅当 ajax 请求返回结果并完成成功功能时才加载窗口,即使它应该是异步的。
会喜欢一些想法为什么会发生。
g_SearchHandler.SearchPleaseWait(true); 正在调用用等待的 gif 覆盖屏幕并调用 displayNewTab() 打开一个新标签。
打开新标签的代码:
displayInNewTab: function(){
try {
var w = window.open(href = "/prod/php/home.php");
var loadingFunc = function(){
var devices = w.document.querySelector(`.sidebar-segment[data-segment-name="DEVICES"]`);
var selDevice = getSelectedDeviceTreeData();
if(!selDevice){
return;
}
var selDeviceObj = w.document.getElementById(selDevice.name);
//when the window is loaded keep trying until elements are available for clicking.
if(devices && selDeviceObj){
devices.click()
w.ClickOnItem(selDevice.name, false, true)
}else{
setTimeout(loadingFunc,1000);
}
}
$(w.document).ready(loadingFunc);
}catch (e){
console.error(e)
}
}
g_SearchHandler.SearchPleaseWait(true); ajax 请求:
$.ajax({
type : "POST",
dataType : "json",
url : "commands.php",
data : params,
success : function(objJSON)
{
DisplayResults(objJSON);
g_SearchHandler.SearchPleaseWait(false);
}
});
【问题讨论】:
标签: javascript ajax events