Могу ли я заставить функцию history.back() работать в Chrome при использовании файла://protocol?
Я создаю приложение в среде, где мне ограничивается использование локальной файловой системы и браузера (т.е. запуск сервера не является вариантом). У меня есть общая ссылка "вернуться" на многочисленные страницы, которые в основном просто звонят history.back()
. Это выглядит примерно так:
function goBack(evt) {
// Check to see if override is needed here
// If no override needed, call history.back()
history.back();
}
$('#my-back-button').click(goBack);
Этот код отлично работает в Firefox и IE6 (не спрашивайте), но не работает в Chrome. Любые предложения относительно того, почему и/или возможные обходные пути?
Я также пробовал history.go(-1);
, который тоже не работает.
Ответы
Ответ 1
По какой-то причине в chrome вам нужно добавить return false после вызова history.go(-1)
Измените свою функцию на:
function goBack(evt) {
// Check to see if override is needed here
// If no override needed, call history.back()
history.go(-1);
return false;
}
Ответ 2
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
$(document).ready(function () {
function goBack(evt) {
// Check to see if override is needed here
// If no override needed, call history.back()
history.back();
$('#my-back-button').forwardEvent('click');
}
$('#my-back-button').click(goBack);
/**
* chrome workaround for triggering click events
* @param {event} event event
* @return {undefined} Returns undefined
*/
$.fn.forwardEvent = function(event) {
this.each(function() {
if (this.dispatchEvent) {
if (event.originalEvent) {
event = event.originalEvent
}
try {
this.dispatchEvent(event);
} catch(error) {
$(this).trigger(event);
}
}
else {
$(this).trigger(event);
}
});
return this;
};
});
</script>
<input type="button" value="<<<<" id="my-back-button">
</body>
</html>
Ответ 3
Для Chrome используйте код ниже:
<a href="#" onclick="javascript:history.go(-1);return false;" style="text-decoration:underline;">Back</a>
Только этот код будет работать.
Надеюсь, это поможет...
Счастливое кодирование..:)
Ответ 4
var referrer = document.referrer;
window.location.replace(реферер);
Используйте это, он будет работать