Javascript Safari back page(后退按钮)问题
我正在使用下拉菜单上的以下功能:Javascript Safari back page(后退按钮)问题,javascript,jquery,Javascript,Jquery,我正在使用下拉菜单上的以下功能: 下拉菜单更改使用的货币,从而更改 将项目的价格转换为该货币 使用下拉列表时,下面的代码还会添加 将所选货币放入文本区域(id=“showTitle”) 之所以使用,是因为下拉列表刷新 使用新货币且无会话的页面将文本区域存储在 新页面将是空的 SessionStorage将完全相同的内容重新加载回文本区域 每次刷新页面时。更改内容的唯一方法 是通过使用下拉菜单 到目前为止一切都很好。 但现在要解决问题。 使用Safari(mac)作为浏览器: 如果用户更改货币
- 下拉菜单更改使用的货币,从而更改 将项目的价格转换为该货币
- 使用下拉列表时,下面的代码还会添加 将所选货币放入文本区域(id=“showTitle”)
- 之所以使用,是因为下拉列表刷新 使用新货币且无会话的页面将文本区域存储在 新页面将是空的
- SessionStorage将完全相同的内容重新加载回文本区域
每次刷新页面时。更改内容的唯一方法
是通过使用下拉菜单
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
</head>
<body>
<form name="currency select" title="Currency Selector">
<select name="currency" id="currencyList" value="GO">
<option value="" disabled="disabled" selected="selected" none="">$ € £</option>
<option value="/session/currency/usd/" title="US Dollar">USD</option>
<option value="/session/currency/eur/" title="EURO">EUR</option>
</select>
<textarea id="showTitle"></textarea>
</form>
<script>
$(document).ready(function(){
var field = document.getElementById("showTitle");
var savedValue = sessionStorage.getItem("autosave");
// See if we have an autosave value
// (this will only happen if the page is accidentally refreshed)
if (savedValue) {
// Restore the contents of the text field
field.value = savedValue;
//set dropdown to session value
$('#currencyList option[title="'+ savedValue + '"]').prop('selected', true);
}
// Listen for changes in the text field
field.addEventListener("input", function() {
// And save the results into the session storage object
sessionStorage.setItem("autosave", this.value);
});
$(document).on('change','#currencyList',function(){
//get text
var result = $("option:selected",this).attr('title');
//set field
$(field).val(result);
//set session storage item
sessionStorage.setItem("autosave", result);
//redirect
window.document.location.href=this.options[this.selectedIndex].value;
});
});
</script>
</body>
</html>
$ € £
美元
欧元
$(文档).ready(函数(){
var字段=document.getElementById(“showTitle”);
var savedValue=sessionStorage.getItem(“自动保存”);
//看看是否有自动保存值
//(仅当页面意外刷新时才会发生此情况)
if(savedValue){
//恢复文本字段的内容
field.value=savedValue;
//将下拉列表设置为会话值
$(“#currencyList选项[title=“+savedValue+”).prop('selected',true);
}
//收听文本字段中的更改
field.addEventListener(“输入”,函数(){
//并将结果保存到会话存储对象中
sessionStorage.setItem(“自动保存”,this.value);
});
$(document).on('change','#currencyList',function(){
//获取文本
var result=$(“选项:选中”,this).attr('title');
//设置字段
$(字段).val(结果);
//设置会话存储项
setItem(“自动保存”,结果);
//重定向
window.document.location.href=this.options[this.selectedIndex].value;
});
});
也许可以检查一下:谢谢,文森特。一个有趣但不同的问题。sessionStorage在Safari中以非私有模式工作,如上所述。对于Safari的私有使用情况,它似乎确实给出了一个问题,所以我阅读了。只是在Safari的私有窗口中测试了它,它仍然像上面一样工作。