Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Impamantare

Apple maps pe Windows 10

Sfarsitul woke-ismului si al core...

Renovare completa + pompa de cald...
 Libre Office nu vad liniile

Modalitați amuzante și ...

O disparitie de ani buni, Acces D...

Mancarea e scumpa
 Parere achiziționare BMW G20

Schimbarea bateriei moderne la VA...

Rostschreck Lidl

Si noi suntem Florin Piersic? / J...
 Rascumparare euroobligatiuni (pri...

Detartraj partial slatina

Cu ce pot izola fonic peretii pen...

Telefon cu senzor compass BUN
 

[jQuery]Acces variabile exterior handler loadedmetadata

- - - - -
  • Please log in to reply
No replies to this topic

#1
TorchMan

TorchMan

    Junior Member

  • Grup: Members
  • Posts: 226
  • Înscris: 21.10.2012
Salut,

Am urmatorul cod:

$(document).ready(function(){
  var videoCache = $('#bg-video');
  /* We get the width and the height of the video file*/
  $('#bg-video').on('loadedmetadata',function(){
	videoCache.data('width', videoCache.width());
	videoCache.data('height', videoCache.height());
	$('#log').text(videoCache.data('width') + ' ' + videoCache.data('height'));
  });
});


Am nevoie sa initializez data-width si data-height cu width-ul si height-ul unui video si apoi ma folosesc de un paragraf cu idul 'log' sa verific daca totul e ok.
De exemplu daca am un video cu rezolutia 1364 x 768, acel paragraf ar trebui sa contina textul "1364 768".
In forma actuala, paragraful afiseaza dimensiunile corect, dar daca mut linia in afara handler-ului,

$(document).ready(function(){
  var videoCache = $('#bg-video');
  /* We get the width and the height of the video file*/
  $('#bg-video').on('loadedmetadata',function(){
	videoCache.data('width', videoCache.width());
	videoCache.data('height', videoCache.height());
  });

  $('#log').text(videoCache.data('width') + ' ' + videoCache.data('height'));

});


Se afiseaza "undefined undefined". Presupun ca acea scriere in paragraf are loc inainte de initializarea din handler, asta fiind probabil si motivul pentru care nu sunt inca definite.
Am incercat ca si rezolvare sa declar o variabila globala si sa o initializez cu "false", urmand sa o setez pe "true" in momentul in care se iese din handler, iar intr-o bucla while ar trebui sa astept terminarea functiei respective.
var handlerIsDone = false;
$(document).ready(function(){
  var videoCache = $('#bg-video');
  /* We get the width and the height of the video file*/
  $('#bg-video').on('loadedmetadata',function(){
	videoCache.data('width', videoCache.width());
	videoCache.data('height', videoCache.height());
	handlerIsDone = true;
  });
  while(!handlerIsDone){}
  $('#log').text(videoCache.data('width') + ' ' + videoCache.data('height'));

});


Doar ca lucrurile nu stau chiar asa, aparent "handlerIsDone" nu e niciodata setat pe true, iar acel while nu se opreste deci niciodata.

Care ar fi solutia sa pot accesa data-width si data-height din exterior ?

Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate