apicallbackswfobjectjquery-toolsonreadystatechange

callback from flashembed of jquery Tools


jQuery Tools includes a flashembed API which accepts many parameters. Is there one which accepts callback function and fires after the success state of the flash player load event?

playerdiv.flashembed(url+'/VIPlayer.swf','knds_player',300,250,'8.0.0',false,flashVars);

Information: official website.

Note: This is possible in Google swfobject library as below:

swfobject.embedSWF(url+'/VIPlayer.swf','knds_player',300,250,'8.0.0',false,flashVars,callBack);

function callBack(event){ event after successful display of code
}

But I need to use only flashembed. Can you please help me here?

Thanks in Advance :)


Solution

  • The flashembed method has an onFail argument which takes a callback as a value:

    $("#flash").flashembed({
       src: flashSWF,
       version:[10,0],
       id:"flashObj",
       width: 500,
       height: 300,
       wmode: "opaque",
       cachebusting: "false",
       allowscriptaccess: "always",
       api: "false",
       scale: "noscale",
       menu: "false",
       onFail: flasherror("#flash")
       })
    

    It inadvertently fires on both success AND failure. Search for the , character to distinguish between the two states. On error, it shows up as the delimiter in the version string, such as 11,0 rather than 11.0:

    function flashError(domnode, newtext){
    
    function failState()
      {
      if ($(domnode).html().search(/,/) !== -1) //player failed to load
        {
        newtext = $(domnode).html(); // store default error string
        $(domnode).empty();
        $(domnode).append(newtext.replace(/,/g,".")); // replace comma with period
        if ($(domnode).hasClass("flashmsg") === false)
          {
          $(domnode).addClass("flashmsg"); // add class to custom error element
          }
        }
      else
        {
        //success logic
        }        
    }
    
    // observer constructor
    var cursor =
    typeof window.hasOwnProperty === "function" ?
      window.hasOwnProperty("WebKitMutationObserver")
        ? new WebKitMutationObserver(startValidation)
        : window.hasOwnProperty("MutationObserver")
          ? new MutationObserver(startValidation)
          : false
            : false
      ;
    
    //Use observer event if it exists
    if (cursor)       
      {
      //Bind observer event to text child of the dom node
      cursor.observe($(domnode).get(0), { childList: true } );
      return;
      }
    //Use mutation event as a fallback
    else if (!!document.addEventListener)
      {
      $(domnode).get(0).addEventListener("DOMNodeInserted", failState, false); 
      }
    //Use readystatechange event for legacy IE
    else
      {
      $(domnode).get(0).addBehavior("foo.htc");
      $(domnode).get(0).attachEvent("onreadystatechange", failState);
      }
    

    References