Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Safari back page(后退按钮)问题_Javascript_Jquery - Fatal编程技术网

Javascript Safari back page(后退按钮)问题

Javascript Safari back page(后退按钮)问题,javascript,jquery,Javascript,Jquery,我正在使用下拉菜单上的以下功能: 下拉菜单更改使用的货币,从而更改 将项目的价格转换为该货币 使用下拉列表时,下面的代码还会添加 将所选货币放入文本区域(id=“showTitle”) 之所以使用,是因为下拉列表刷新 使用新货币且无会话的页面将文本区域存储在 新页面将是空的 SessionStorage将完全相同的内容重新加载回文本区域 每次刷新页面时。更改内容的唯一方法 是通过使用下拉菜单 到目前为止一切都很好。 但现在要解决问题。 使用Safari(mac)作为浏览器: 如果用户更改货币

我正在使用下拉菜单上的以下功能:

  • 下拉菜单更改使用的货币,从而更改 将项目的价格转换为该货币
  • 使用下拉列表时,下面的代码还会添加 将所选货币放入文本区域(id=“showTitle”)

  • 之所以使用,是因为下拉列表刷新 使用新货币且无会话的页面将文本区域存储在 新页面将是空的

  • SessionStorage将完全相同的内容重新加载回文本区域 每次刷新页面时。更改内容的唯一方法
    是通过使用下拉菜单

到目前为止一切都很好。 但现在要解决问题。

使用Safari(mac)作为浏览器: 如果用户更改货币(比方说从欧元更改为美元),然后使用浏览器的回页功能,价格将更改回以前的欧元价格,但文本区域仍然显示“美元”,因为它是由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的私有窗口中测试了它,它仍然像上面一样工作。