¡buenas!
en realidad no tiene nada complicado. según el punto de vista que lo quieras ver, onload es como una propiedad al que le asignas una función (handler). esa función se invoca cuando ese evento ocurra. ahora bien, a los eventos no le puedes pasar parámetros propios porque en circunstancias normales un evento no es para ser invocado manualmente. si lo que quieres hacer es invocar una función que recibe parámetros, entonces como handler debes crear una función que invoque a la función que recibe parámetros.
Código:
// la forma mas simple de usar onload, asignar una funcion y en el cuerpo el codigo;
self.onload = function(){
// codigo
};
function fn(a,b){
// hacer algo con argumentos a,b
}
// invocar una funcion con parametros cuando ocurra el evento;
self.onload = function(){
fn(x,y); // pasar parametros x,y a fn
};
sobre las limitaciones, onload se invoca una sola vez y es cuando termina la carga del documento. desplazarse con anclas no tiene ningún efecto sobre el evento. sin embargo, en cualquier momento puedes invocar el evento como si fuera una función cualquiera, pero técnicamente no tiene el mismo efecto.
self.onload()