views:

92

answers:

2

I'm having an annoying problem which I have asked some questions about already, now I finally tracked it down, and I think I'm close to a solution, with your help of course.

I have two JavaScript files, both using jQuery, but only one of them are running. The one working starts with "$(document).ready(function() {.." and works just fine. The other one which does not work starts with "function pageLoad(){..".

The reason to why I need the pageLoad event, is because it's triggered even on async postBacks, but it's not even loaded on non-async post backs? ..

I guess there is some problem in the code which makes it bug, but it works just fine on my local machine, but as soon as it's run on my web-host's server through the Internet, everything in that javascript-file is just not working.

Code:

function pageLoad(){
    alert("this does not even show :(");
    //var's to be set
    var sendPM_pxToBottomWhenAutoScrolling = 140 //

    $(".NewConversationTrigger").click(function() {
     $("#pm_area_OpenSamtaleID").val(this.id); 
     $("#pm_area_TriggerOpenSamtale").click(); 
    });

   //Auto Scroll system for PM
   if ($(".nyPM_SubmitButton").attr("disabled") == true) {
        $(".scrollToBottom").attr({ scrollTop: $(".scrollToBottom").attr("scrollHeight") });
   }else{
        $(".scrollToBottom").animate({ scrollTop: ($(".scrollToBottom").attr("scrollHeight") - $(".scrollToBottom").height() - sendPM_pxToBottomWhenAutoScrolling) }, 1000);
   }//Auto Scroll system for PM



    //Reciver PM's
   $(".SentPM:not(:last-child)").hover(function() {
    $(this).children(".PM_Options").show();
   }, function () {
    $(this).children(".PM_Options").hide();
   });//Reciver PM's
   $(".RecivedPM").hover(function() {
    $(this).children(".PM_Options").show();
   }, function () {
    $(this).children(".PM_Options").hide();
   });//Reciver PM's








    //TypeWatch
    $("#userlist_area_filterText").typeWatch({ highlight:true, callback:finished } );
        function finished(txt) { $("#userlist_area_filterSubmit").click() };

    $(".updateSamtaleVindue").click(function(){
    $("#pm_area_OpenSamtaleID").val(this.id); 
    $("#pm_area_TriggerOpenSamtale").click(); 

    });

    $(".nyPM_SubmitButton").click(function(){
    $("#pm_area_SendMessageText").val($(".nyPM_TextArea").val());
    $("#pm_area_TriggerSendMessage").click(); 
    $(".nyPM_SubmitButton").attr("disabled","disabled");  $(".nyPM_SubmitButton").val("Din Besked er Sendt"); 
    $(".nyPM_TextArea").attr("readonly", true);  $(".nyPM_TextArea").addClass("SentPM_FakeBox")

    });

    }
+1  A: 

Since your using ASP.NET, you probably don't need to define the call to "pageLoad" with the ScriptManager. It should automatically fire with ASP.NET AJAX. There's a pretty good write up on when to use the $(document).ready() vs pageLoad(), http://encosia.com/2009/03/25/document-ready-and-pageload-are-not-the-same/.

It also mentions that you can probably move your "click" and "hover" event code over to your $(document).ready() code with the LiveQuery addition to jQuery 1.3.

It seems really odd that the $(document.ready() function would run a second time on post backs. Are you using ASP.NET AJAX? Or could you give a little more sample code from how your postback is working?

smaglio81
A: 

It sounds like a JavaScript error during parsing has prevented your include with pageLoad() in it from executing. Do you have any JavaScript errors in your browser when you load this page?

I noticed that you're missing a semicolon on this line:

var sendPM_pxToBottomWhenAutoScrolling = 140 //

Try correcting that and see if it makes a difference.

Dave Ward
That didn't do the trick :(Anyway, wouldn't a mistake like that act the same way online as when run locally?
Jacob Kofoed