gpt4 book ai didi

javascript - ajax 加载后 IE 焦点事件随机失败

转载 作者:行者123 更新时间:2023-11-29 17:23:16 25 4
gpt4 key购买 nike

目前,我们仅支持 IE8。

我有一个从服务器获取数据的 ajax 调用,用响应替换容器 div 中的 HTML,然后尝试将焦点放在响应中包含的元素上。

依赖于【IE Magic】?有时此代码有效,有时无效。我需要找到可以 100% 工作的东西。 console.log 语句在 100% 的时间内记录正确的 ID,即使在焦点失败时也是如此。

$.ajax({
type: 'POST',
url: that.Url,
contentType: 'application/json; charset=utf-8',
dataType: 'html',
data: dataToSend,
success: function (response) {
$(container).html(response);
that.initialize();

var element = document.getElementById(elementId);
setTimeout(function () {
setTimeout(function () {
setTimeout(function () {
setTimeout(function () {
setTimeout(function () {
setTimeout(function () {
console.log($(element).attr('id'));
element.focus();
}, 10);
}, 10);
}, 10);
}, 10);
}, 10);
}, 10);
}

嵌套的 setTimeouts 可以查看在较早的超时期间是否有其他东西被放入堆栈。我尝试将单个 setTimeout 设置为 1000,但仍然看到随机失败。我已经尝试将 $(container).html(response); 替换为 $(container)[0].innerHTML = response; 并且仍然无法始终如一地工作.我尝试用 $(container).find('#' + elementId) 替换 document.getElementById(element)。我也试过将 var element = document.getElementById(elementId); 移到 setTimeout 中,但仍然看到随机失败。使用 Firefox,需要 0 个 setTimeouts 并且代码运行完美,但不幸的是,这不是我们的选择。将 console.log 更改为 alert 确实解决了这个问题,但这只是因为它延迟了焦点,直到单击“确定”之后,但额外的鼠标单击对于可用性来说非常糟糕。

that.initialize() 将类添加到新元素、添加事件、修改新元素的宽度/高度等......所有这些都在 100% 的时间内工作。

最佳答案

这似乎是旧版 IE 中的一个真正错误。据报道,一个有效的技巧是连续两次调用 .focus()

关于javascript - ajax 加载后 IE 焦点事件随机失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11217177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com