我也遇到了这个问题。
您可以使用 window.location 使浏览器访问新页面,但当前页面不会记录在浏览器历史记录中(至少使用谷歌浏览器)。
因此,我同意 SMathew 的观点,即应该触发新事件。但是由于某些安全原因,jQuery 触发的锚点上的点击事件不会使浏览器访问新页面。最后我发现以下代码有效。
$("a.confirm").on('click', function(e) {
if (!$(this).data('confirmed')) {
e.preventDefault();
var a = this;
bootbox.confirm("Are you sure?", "No", "Yes", function(result) {
if(result) {
$(a).data('confirmed', 1);
if (document.createEvent) {
var evObj = document.createEvent('MouseEvents');
evObj.initEvent('click', true, true);
a.dispatchEvent(evObj);
}
else if (document.createEventObject) {
a.fireEvent('onclick');
}
}
});
}
});
我只是在谷歌浏览器中测试了上面的代码,我从https://getsatisfaction.com/issuu/topics/opening_the_issuu_smartlook_viewer_with_my_flash_website?utm_content=topic_link&utm_medium=email&utm_source=reply_notification找到了火灾事件代码
更多的
我发现这篇文章https://stackoverflow.com/a/18132076/1194307,可以使用jQuery.simulate来解决这个问题。我的最终代码如下所示:
$("[data-toggle=confirm]").on('click', function(e) {
var a = $(this);
if (!a.data('confirmed')) {
e.preventDefault();
var question = a.data('question');
if (!question) question = 'Are you sure?';
var yes = a.data('yes');
if (!yes) yes = 'Yes';
var no = a.data('no');
if (!no) no = 'No';
bootbox.confirm(question, no, yes, function(result) {
if(result) {
a.data('confirmed', 1).simulate('click');
}
});
}
});
它适用于锚点和表单按钮。