How to run a function when the page is loaded?

前端 未结 9 1537
小鲜肉
小鲜肉 2020-11-22 11:02

I want to run a function when the page is loaded, but I don’t want to use it in the tag.

I have a script that runs if I initialise it in th

相关标签:
9条回答
  • 2020-11-22 11:42

    Taking Darin's answer but jQuery style. (I know the user asked for javascript).

    running fiddle

    $(document).ready ( function(){
       alert('ok');
    });​
    
    0 讨论(0)
  • 2020-11-22 11:49

    window.onload = codeAddress; should work - here's a demo, and the full code:

    <!DOCTYPE html>
    <html>
        <head>
            <title>Test</title>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <script type="text/javascript">
            function codeAddress() {
                alert('ok');
            }
            window.onload = codeAddress;
            </script>
        </head>
        <body>
        
        </body>
    </html>


    <!DOCTYPE html>
    <html>
        <head>
            <title>Test</title>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <script type="text/javascript">
            function codeAddress() {
                alert('ok');
            }
            
            </script>
        </head>
        <body onload="codeAddress();">
        
        </body>
    </html>

    0 讨论(0)
  • 2020-11-22 11:58

    Try readystatechange

    document.addEventListener('readystatechange', () => {    
      if (document.readyState == 'complete') codeAddress();
    });
    

    where states are:

    • loading - the document is loading (no fired in snippet)
    • interactive - the document is parsed, fired before DOMContentLoaded
    • complete - the document and resources are loaded, fired before window.onload

    <script>
      document.addEventListener("DOMContentLoaded", () => {
        mydiv.innerHTML += `DOMContentLoaded (timestamp: ${Date.now()})</br>`;
      });
      
      window.onload = () => {
        mydiv.innerHTML += `window.onload (timestamp: ${Date.now()}) </br>` ;
      } ;
    
      document.addEventListener('readystatechange', () => {
        mydiv.innerHTML += `ReadyState: ${document.readyState}  (timestamp: ${Date.now()})</br>`;
        
        if (document.readyState == 'complete') codeAddress();
      });
    
      function codeAddress() {
        mydiv.style.color = 'red';
      }
    </script>
    
    <div id='mydiv'></div>

    0 讨论(0)
  • window.onload = function() { ... etc. is not a great answer.

    This will likely work, but it will also break any other functions already hooking to that event. Or, if another function hooks into that event after yours, it will break yours. So, you can spend lots of hours later trying to figure out why something that was working isn't anymore.

    A more robust answer here:

    if(window.attachEvent) {
        window.attachEvent('onload', yourFunctionName);
    } else {
        if(window.onload) {
            var curronload = window.onload;
            var newonload = function(evt) {
                curronload(evt);
                yourFunctionName(evt);
            };
            window.onload = newonload;
        } else {
            window.onload = yourFunctionName;
        }
    }
    

    Some code I have been using, I forget where I found it to give the author credit.

    function my_function() {
        // whatever code I want to run after page load
    }
    if (window.attachEvent) {window.attachEvent('onload', my_function);}
    else if (window.addEventListener) {window.addEventListener('load', my_function, false);}
    else {document.addEventListener('load', my_function, false);}
    

    Hope this helps :)

    0 讨论(0)
  • 2020-11-22 12:06

    Take a look at the domReady script that allows setting up of multiple functions to execute when the DOM has loaded. It's basically what the Dom ready does in many popular JavaScript libraries, but is lightweight and can be taken and added at the start of your external script file.

    Example usage

    // add reference to domReady script or place 
    // contents of script before here
    
    function codeAddress() {
    
    }
    
    domReady(codeAddress);
    
    0 讨论(0)
  • 2020-11-22 12:07

    Rather than using jQuery or window.onload, native JavaScript has adopted some great functions since the release of jQuery. All modern browsers now have their own DOM ready function without the use of a jQuery library.

    I'd recommend this if you use native Javascript.

    document.addEventListener('DOMContentLoaded', function() {
        alert("Ready!");
    }, false);
    
    0 讨论(0)
提交回复
热议问题