【问题标题】:Execute js function when accessing a page from browser's back button从浏览器的后退按钮访问页面时执行js函数
【发布时间】:2016-05-02 16:27:10
【问题描述】:

我正在使用 jquery mobile 1.2.0 和 jquery 1.7.2 开发一个网站,在加载页面时尝试执行 js 函数时遇到问题。

正常情况是用户使用链接(锚点)加载页面,所以我正在处理 jquery 移动事件“pageinit”,这可以正常工作,但我需要在用户访问时执行相同的代码/功能使用浏览器的后退按钮的页面,在这种情况下永远不会触发“pageinit”事件。

javascript 函数会修改 UI,因此需要在调用函数之前加载 UI。

我正在 Safari 9.1 (iOS 9.3) 上测试它。

我的页面与此非常相似:

<section id="someid" data-role="page" data-theme="a">
<!-- Page content -->
</section>

<script type="text/javascript">
function myFunction() {
//some code to modify de UI on page loaded
}

$("#someid").on("pageinit", function (e) {
    var page = $(this);

    myFunction();
});
</script>

更新 1:

我已经测试了here 列出的所有 jquery mobile 事件,但没有任何运气。

【问题讨论】:

    标签: javascript jquery jquery-mobile mobile-safari


    【解决方案1】:

    试试pageshowload 事件!

    来自文档: pageshow 事件在会话历史条目被遍历时触发。 (这包括 back/forward 以及 onload 事件后的初始页面显示。)

    也仅供参考,看起来pageinit 已成为depracated in 1.4

    $(document).on("pageshow", "#someid", function (e) {
        var page = $(this);
    
        myFunction();
    });
    

    【讨论】:

    【解决方案2】:

    最后我找到了这个SO question 让我解决了这个问题,基本上是使用窗口事件“popstate”,这是我使用的确切代码:

    <section id="someid" data-role="page" data-theme="a">
    <!-- Page content -->
    </section>
    
    <script type="text/javascript">
    function myFunction() {
    //some code to modify de UI on page loaded
    }
    
    $("#someid").on("pageinit", function (e) {
        var page = $(this);
    
        myFunction();
    });
    
    var myCustomEvent = (navigator.userAgent.match('iPhone') != null) ? 'popstate' : 'pageshow';
    
    $(window).on(myCustomEvent, function(e) {
        myFunction();
    }
    </script>
    

    注意 1:“pageshow”事件被大多数不同于 Safari Mobile 的浏览器完美评估,因此它正在检查这些情况。

    注意 2:我在 Safari Mobile 9.1 (iOS 9.3) 上测试了此代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-09
      • 2013-07-19
      • 2012-02-19
      • 2010-12-13
      相关资源
      最近更新 更多