onbeforeunload不会触发

时间:2015-09-30 22:19:42

标签: javascript jquery ajax onbeforeunload

我有一个onbeforeunload事件,当我离开页面并运行我附加到该事件的代码时,该事件应该触发。我把它放在我页面中的cshtml的scripts标签中,所以理论上它只应该触发我在那个特定的页面上然后离开它(我对事件的理解可能是不正确的)。但是,当我转到另一个页面时,onbeforeunload事件似乎不想触发。我已经尝试在它上面设置一个断点,但似乎没有点击它,并且我的控制台上没有出现任何错误。

我看过这篇帖子,其中一张海报提到使用此事件来检测页面更改 Best way to detect when a user leaves a web page?

<script type="text/javascript">

$(document).ready(function () {

    window.onbeforeunload = SaveDashboard;


});

function SaveDashboard(){
    var gridArray = _.map($('.grid-stack .grid-stack-item:visible'), function (el) {
        el = $(el);
        var gridID = el.find('.grid-stack-item-content.ui-draggable-handle').first().attr('id');
        var node = el.data('_gridstack_node');
        return {
            id: gridID,
            x: node.x,
            y: node.y,
            width: node.width,
            height: node.height
        };
    });

    $.ajax({
        url: 'Dashboard/EditWidgets/',
        type: 'PUT',
        data: {
            widget: gridArray
        },
        success: function (dataset) {
        },
        failure: function (xhr, error) {
            console.log(xhr)
            console.log(error)
        },
    });
}
</script>

1 个答案:

答案 0 :(得分:0)

你应该在onbeforeunload处理程序中返回一个字符串。如果你没有退货,那么这个活动就不会解雇你的经纪人。您必须返回的文本是将放置在浏览器将打开的提示中的文本,询问用户是否确实要离开页面。