gpt4 book ai didi

javascript - 返回HTML5页面时如何触发函数? (javascript)

转载 作者:行者123 更新时间:2023-11-28 05:04:53 25 4
gpt4 key购买 nike

在两个 html 页面之间来回 - 在我的示例中 Page1 和 Page 2。当我从第 2 页移回第 2 页时,我 < strong>想要触发一个rebuild-my-html类型函数 - 类似于触发“onload”的方式。当然,Onload 仅在应用程序重新启动/重新加载时才会触发。

我不确定在转到第 2 页之前是否需要执行某些操作(由用户触发的事件),或者是否有一个基本功能可以保留在第 1 页。

我确信这是基本的,但我就是找不到它!我一直在网上搜索与 onload 相关的 DOM 事件。

基本应用程序结构

  1. 从第 1 页开始。
  2. onload函数执行

    function initLoad() 

它是由

触发的
      document.addEventListener('readystatechange', function()  

(在实际应用程序中,我使用 javascript onload 函数动态布局一些 html)

(在实际应用中,用户可以做出选择来指示他们希望在第 2 页上看到的详细信息)

  • 点击用户事件按钮,将应用移至第 2 页
  • 第 2 页运行 onload 函数

     function init()  

    (在实际应用中,用户还会发起一些其他事件)

  • 用户事件将应用返回到第 1 页 - 我正在使用

     history.go(-1); 

    因为这是我知道的唯一方法

  • 返回第 1 页后,我希望应用程序返回以运行重建刷新类型功能

  • 在使用该应用程序的过程中,我希望该应用程序不断地从第 1 页到第 2 页来回移动,从而触发两个网页上的刷新功能

    (在我的真实应用程序中,用户正在测试自己的内存能力。他们在第 1 页和第 2 页之间来回切换。第 1 页每次都会以新的方式显示信息,以指示用户在第 1 页中已展示的知识的内容2)

  • 示例代码

    第 1 页代码 STACKexamplePage1Refresh.html

        <!DOCTYPE html>
    <html>

    <body onunload="OnUnload()">

    </script>

    <script src="STACKExampleRebuild.js"></script>

    <h1> Page 1 </h1>

    <p id = changeMe>Want html info like this to be changed upon return from Page 2 and execution of rebuildExamplePage1 function</p>


    <button onclick="callAnothePage()">Go to Page 2</button>




    <script>
    </script>


    <script>

    function initLoad() {
    alert("Page 1 is loaded");
    console.log ("Page 1 is loaded");

    }

    function OnUnload() { // this does not seem to happen
    alert("Page 1 is UNloaded");
    }


    document.addEventListener('readystatechange', function() {
    // http://stackoverflow.com/questions/14207922/javascript-error-null-is-not-an-object
    if (document.readyState === "complete") {
    initLoad();
    }// end if
    }); // end function

    window.onload = function() { // this is just another way of testing initLoad - it runs too
    alert("*Page 1 is REloaded*");
    }

    function callAnothePage()
    {
    window.location = "STACKexamplePage2Refresh.html"; //
    }

    </script>

    </body>
    </html>

    第 2 页代码 STACKexamplePage2Refresh.html

        <!DOCTYPE html>
    <html>
    <body onload="init()">


    <script src="STACKExampleRebuild.js"></script>




    <h1> Page 2 </h1>

    <button onclick="historyBack()">Return To Learn Page</button>


    <script>
    function init() {
    alert("init function executed , Page 2 is loaded");
    console.log ("init function executed , Page 2 is loaded");
    }



    function historyBack() {
    history.go(-1);
    rebuildExamplePage1(); // this function is in STACKExampleRebuild.js


    //navigator.app.backHistory(); // tried this too .... 1.15.17
    }



    </script>

    </body>
    </html>

    示例代码:Java 脚本 STACKExampleRebuild.js

         function rebuildExamplePage1(){
    alert("rebuildExamplePage1 function execute .... function that will allow for Page 1 rebuild executed");
    console.log ("rebuildExamplePage1 function execute .... function that will allow for Page 1 rebuild executed");

    /*
    var changePage1Info = "This info changed while on page 2";
    document.getElementById("changeMe").innerHTML = changePage1Info;
    */


    }

    当我运行rebuildExamplePage1函数,并尝试运行注释掉的部分时 - 更改html id“changeMe” - 回到第1页 -

    在引用changeMe对象时,我得到了一个典型的错误:“null不是一个对象”

    我认为这是因为 javascript 函数无法访问第 1 页上的 html,而它位于第 2 页上。尽管我希望将命令放在历史命令之后可能会起作用。

    我真正想要的是每当用户返回 html 页面时就会触发的某种函数 - 刷新/重入类型函数

    我敢打赌,有一些我无法找到的特殊函数,它将在返回 html 时执行 - 就像我第一次加载页面时的 onload 一样。

    一些我尝试过但不起作用的事情

    第 1 页的 onUnload 函数绝对不会在任何时候执行 - 我认为这对于这个示例来说无论如何都没有意义

    我发现了各种使用持久数据的示例,将内容传递到其他页面,但它们似乎总是尚未加载的页面。我已经在 onload 类型函数中使用了持久数据 - 但它们仅在第一次加载页面时发生,而不是在返回时发生

    我需要能够从第 1 页到第 2 页来回移动

    我第二次返回第 2 页时会遇到同样的问题。在我的真实应用程序中,我每次都会在第 2 页上显示不同的详细信息

    最佳答案

    将 ID 添加到每个 html 页面的 body 标记,然后设置一个条件来查看 body 是否在“加载”时具有第 2 页 ID(我知道它是readystatechange,但我无法在 jsfiddle 中重新创建它)。

    var page2 = document.getElementById('page-2');

    if (page2 !== null) {
    alert('page 2 has been loaded');
    } else {
    alert('page 2 has not been loaded')
    }
    <body id="page-2">

    </body>

    关于javascript - 返回HTML5页面时如何触发函数? (javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41838913/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com