点击返回按钮时执行一个函数。

5
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 呢?


2
您最好的解决方案是找到一种方法,让您的应用程序在不挂钩后退按钮事件的情况下工作。例如,如果用户关闭浏览器或直接转到新的URL,这并不是您可以依赖的事件。此外,当您无法离开网站直到API调用完成时,这是非常糟糕的用户体验。我建议找到另一种方式! - Undefined
我知道,但不幸的是没有办法! - Tania Marinova
5
返回按钮意味着用户不想继续处理某些内容。您不应使其执行任何代码。这与无法关闭的弹出窗口和邮件垃圾一样令人恼怒。您应更改代码,使其不需要使用该按钮。如果您提供更多详细信息,也许我们可以告诉您如何做到这一点? - neelsg
1
如果您需要在后退按钮上执行代码,您应该创建自己的“返回”按钮,并使其清晰可见和直观,以便用户使用它而不是浏览器的后退按钮。 - Banana
2
还可以尝试使用jQuery的.unload()来检测用户何时从您的页面导航离开,然后执行您的函数。http://api.jquery.com/unload/ - Banana
是的,你看到了没错 - 但这不是我的想法。我知道这是一个非常非常糟糕的项目,实际上我已经无法忍受了,但是... - Tania Marinova
1个回答

4
您可以使用popstate事件来触发该事件:
$(window).on("popstate", function (event, state) {
    // Here comes the code to execute when the back button is pressed
}

它确实会触发,但也会在前进按钮、页面刷新等情况下触发。请参见https://developer.mozilla.org/zh-CN/docs/Web/API/Window/popstate_event。 - Rune Kaagaard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接