I tested on firefox mobile and chrome mobile browser. Perfectly working on computer browsers
Here is my code inside ready() and load() event method:
$(document).ready(function(){
$(window).on('load hashchange', function(event) {
alert();
});
});
Why alert() is not working after page completed loading.
And here is my another code:
$(function({
$.ajaxSetup({
headers : {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
});
$(window).on('load hashchange', function(event) {
$.ajax({
//ajax request faild due to csrf token mismatch
});
});
I didn't found any X-CSRF-TOKEN request header on chrome devtools.
According to the w3schools 'The ready() method should not be used together with <body onl oad="">'. But I'm not using any html inline load event. Please help me to find out this issue.
I'm using jquery v3.6.0 on my project. Also I used usb remote debugging for check request headers. Thanks in advance
CodePudding user response:
In Chrome Desktop $(document).ready(fn) will run before $(window).on('load', fn).
In Desktop/Mobile Firefox and Mobile Chrome, ready runs after load.
Try:
const print = (s) => out.innerHTML = '\n' s;
$(document).ready(function() { print('ready'); });
$(window).on('load', function() { print('load'); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<pre id="out"></pre>
So, you shouldn't rely on their order for code that has some kind of time-related coupling.
For instance, you could run both on either ready or load, or even run that .ajaxSetup directly (not wrapped into a ready).
