Поскольку в каждой вкладке используется только один объект истории, это кажется невозможным. Правильным способом было бы проверить window.history.current
или window.history.previous
перед тем, как перезвонить. К сожалению, window.history.current
является привилегированным и поэтому недоступно для неподписанных страниц.
Вот грубый набросок грязного обходного пути:
<iframe src="somepage.html" name="myframe"></iframe>
<p><a href="#" id="backBtn">Back</a></p>
<script type="text/javascript">
document.getElementById('backBtn').onclick = function () {
if (window.frames['myframe'].location.hash !== '#stopper') {
window.history.back();
}
// ... else hide the button?
return false; // pop event bubble
};
window.frames['myframe'].onload = function () {
this.location.hash = 'stopper';
};
</script>
Конечно, это предполагает, что просмотр (#hash) никогда не происходит в родительском окне и т. Д., Но это похоже на проблему ограничения движения назад.