【发布时间】:2023-03-15 13:05:01
【问题描述】:
在document.ready 事件中,我有一个函数可以收集具有“wordNum”属性的 html 控件,然后我发出一个 AJAX 请求,该请求返回了每个控件的一些描述,然后我设置了这些控件及其innerhtml 属性和返回的描述。
问题是如果用户点击后退按钮,这个功能当然没有执行,但我需要那个。
代码:
$(document).ready(function () {
Translate();
});
function Translate() {
var list = new Array();
$("*[wordNum]").each(function () {
var endRes = {
ControllerName: this.id,
WordNumber: this.getAttribute("wordNum")
};
list.push(endRes);
});
jQuery.ajax({
url: ' @Url.Action("Translate")',
contentType: "application/json",
dataType: "json",
data: {
List: JSON.stringify(list)
},
traditional: true,
}).done(function (data) {
$.each(data, function (key, val) {
$("*[wordNum]").each(function () {
if (this.id == val.ControllerName) {
this.innerHTML = val.Description;
}
});
});
});
}
那么我怎样才能让点击后退按钮再次执行此功能Translate。
【问题讨论】:
-
您最好的解决方案是找到一种方法让您的应用程序在不挂钩后退按钮事件的情况下工作。这不是您可以依赖的事件,例如,如果用户关闭浏览器或直接转到新 url。此外,当您在 api 调用完成之前无法离开站点时,这也是一个非常糟糕的用户体验。我建议另找方法!
-
我知道,可惜没办法!
-
后退按钮表示用户不想继续处理某事。你不应该让它执行任何代码。这是一种不会消失的弹出窗口和刺激级别的垃圾邮件。您应该更改您的代码,使其不需要这样做。如果您提供更多详细信息,也许我们可以告诉您如何做到这一点?
-
如果您需要在后退按钮上执行代码,您应该创建自己的“后退”按钮并使其清晰可见和直观,以便用户使用它而不是浏览器的后退按钮。
-
还可以尝试使用 jQuery 的
.unload()来检测用户何时离开您的页面,然后执行您的功能。 api.jquery.com/unload
标签: javascript jquery