[JS] functie werkt alleen buiten jQueryplugin

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Duncank
  • Registratie: December 2007
  • Laatst online: 13-09 22:55
Ik ben bezig een eigen jQuery functie te schrijven om een chromeless youtubeplayer in mijn pagina te embedden. De code ziet er als onderstaand uit.

Ik kan pas verder met het beinvloeden van de player wanneer de player geladen is. Wanneer deze geladen is voert hij automatisch de functie onYoutubePlayerReady() uit, maar op het moment dat die functie binnen mijn customplayer-jquery functie zit wordt deze niet uitgevoerd. Weet iemand hoe ik ervoor kan zorgen dat deze toch binnen mijn functie kan plaatsvinden?

**Edit, stukje extra info** de code die er nu staat, werkt. De player wordt ingeladen, zonder video welteverstaan, die behoort toegevoegd te worden in de onYoutubePlayerReady()-functie.

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
(function($) {
    $.fn.customplayer = function(options) {
        var defaults = {
            videoId: 'M-tcFF1BI-A',
            autoplay: false,
        };
        var options = $.extend(defaults, options);

        return this.each( function() {
                      function loadPlayer() {
                var params = {
                    allowScriptAccess: "always",
                    wmode: "transparent"
                };
                var atts = {
                    id: "youtubeplayer"
                };
                // All of the magic handled by SWFObject
                swfobject.embedSWF("http://www.youtube.com/apiplayer?enablejsapi=1&version=3&playerapiid=youtubeplayer","videoDiv", 400, 300, "8", null, null, params, atts);
            }

            function _run() {
                loadPlayer();
            }
            

            _run();
        });
    };
})(jQuery);

[ Voor 10% gewijzigd door Duncank op 08-05-2011 23:02 ]


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 11-09 13:55
Je probleem is scope.
Je geeft 'onYoutubePlayerReady' als callback mee, maar je player weet niet waar hij deze zou moeten vinden. Die kijkt gewoon in de globale (window) scope.

In dit geval kan dat waarschijnlijk ook niet anders, en heb je domweg een dergelijke globale functie nodig. Maar dat is grotendeels afhankelijk van de typen callback die youtube ondersteund.

Acties:
  • 0 Henk 'm!

  • Duncank
  • Registratie: December 2007
  • Laatst online: 13-09 22:55
Maar die callback geef ik niet zelf mee, dat zit in de youtube-embed ingebouwd. En op het moment dat ik buiten mijn functie-scope ga werken, kom ik daar nooit meer met code in toch?

Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
Duncank schreef op zondag 08 mei 2011 @ 23:06:
Maar die callback geef ik niet zelf mee, dat zit in de youtube-embed ingebouwd. En op het moment dat ik buiten mijn functie-scope ga werken, kom ik daar nooit meer met code in toch?
Je kunt je functie in de scope declareren die je wilt en deze vervolgens 'exporteren' naar de globale scope, door de functie referentie te kopiëren naar het window object. Ongeveer zo, zou dat in z'n werk kunnen gaan:

JavaScript:
1
2
3
4
5
6
7
8
9
10
function myScope() {
  var msg = "Hello world";

  function helloWorld() { alert (msg); }

  window.helloWorld = helloWorld;
};

myScope();
helloWorld() // alerts: "Hello world"