使用浏览器的“BACK”函数触发脚本(js或jQuery)

时间:2016-05-15 21:22:52

标签: javascript jquery firefox safari back-button

当通过浏览器的BACK按钮或键命令到达页面时,我找不到执行脚本的方法。 (背景:我需要知道是否使用浏览器的BACK按钮或键命令打开了一个页面。然后我可以检查存储的sessionStorage变量并触发一些适当的东西)。

例如,如果我把它放到我的页面代码中

<script>
  $(document).ready(function() {
    alert("YES!");
    /* in the real situation: do something */
    })
</script>

,当我通过链接加载页面或通过在地址栏中输入其URL直接打开页面时,将显示警告。

但是,当我通过“返回”按钮访问该页面时,此警告将

我使用$(window).on("load", function() {...$(window).on("navigate", function () {...尝试了相同的操作 - 也没有成功......

编辑/补充:

我刚刚意识到浏览器在这方面表现不同:Chrome,Opera,IE和Firefox Windows将正确重新加载页面(并触发document.ready()onload()事件),但Firefox Mac和Safari将会不是 - 他们从缓存加载整个页面而不触发document.ready()onload()。 (我还没有尝试过移动浏览器)

所以我搜索了避免缓存内容的解决方案,但到目前为止我已经找到并尝试了(这很多!)也没有用...

1 个答案:

答案 0 :(得分:0)

阅读批次帖子并在那里尝试解决方案并将问题缩小到浏览器问题之后,我发现了这个答案,它强制页面也在Safari中重新加载(显然也是火狐/苹果机):

https://stackoverflow.com/a/13123626/5641669

基本上,这个jQuery代码通过Safari上的后退按钮重新加载页面的原始状态,这也允许在页面加载时触发任何所需的脚本:

                    <TextInput
                        style={[styles.input, styles.whiteFont]}
                        placeholder="Username"
                        placeholderTextColor="#FFF"
                        value={this.state.username}
                        ref= "username"
                        onChangeText={(username) => this.setState({username})}
                    />
相关问题