2012-05-10 37 views
6

uczyłem się trochę javascript, aby wybrać plik i używać go do tworzenia objectUrl która może być ustawiona jako src o html5 video .I ja to wypróbowanie w chrom wersji 18.0 .1025.162 na ubuntu lucid i użycie lokalnego pliku html z plikiem javascript i plikami multimedialnymi w tym samym folderze.javascript window.URL jest niezdefiniowana funkcja

Mogę wybrać plik wideo za pomocą elementu wejściowego i po kliknięciu na play link, wykonywana jest funkcja javascript playVideo().

<video id="vid" name='myvid' width="640" height="360" controls="controls"> 
     <source src="test.webm" type="video/webm" /> 
</video> 
<br><a href="#" id="playlnk">Play </a> </li> 
<br><input type="file" name="fileselect" id="fselect"> </input> 

javascript plik jest

$(document).ready(function(){ 
     player=$('#vid').get(0);   
     $('#playlink').click(function(){playVideo(player);});   
    }); 
function setVideoSrc(player,file){ 
    console.log('winurl='+window.URL); 
    var fileURL = window.URL.createObjectURL(file); 
    player.src=fileURL; 
    player.load(); 
    return; 
} 
function playVideo(player) { 
    var file=document.getElementById('fselect').files[0]; 
    console.log('you chose:'+file); 
    if (file==undefined){ 
     console.log('no file chosen'); 
    }else{ 
     console.log('file='+file); 
     setVideoSrc(player,file); 
    }  
} 

Kiedy nie wybrać dowolny plik i kliknij na PlayLink, sztuki wideo i konsola domyślny dziennik mówi no file chosen -as oczekiwane.

Błąd występuje, gdy wybieram plik wideo, a następnie kliknę link odtwarzania. Następnie metoda wywołuje , w której dziennik konsoli mówi: window.URL' is undefined`

Czy to możliwe? Czy ktoś może mi pomóc to poprawić? Oto wynik dziennika konsola

you chose:[object File] //from playVideo() function 
file=[object File] //from playVideo() function 
winurl=undefined //setVideoSrc() function 
Uncaught TypeError: Cannot call method 'createObjectURL' of undefined 
+1

[window.URL] (https : //developer.mozilla.org/en/DOM/window.URL) jest specyficzne dla Gecko. Z której przeglądarki korzystasz? –

+0

Używam .. Chrom, czy istnieje niezależny od przeglądarki sposób, aby to zrobić? – damon

+1

Według mojej wiedzy, nie ma (IE i Opera nie wydają się wspierać w ogóle). Chrome ma jednak odpowiednik ('window.webkitURL') [zgodnie z MDN] (https://developer.mozilla.org/en/DOM/window.URL.createObjectURL). –

Odpowiedz

6

Korzystanie window.webkitURL w Chrome.

whould działać zarówno Chrome i FireFox

function setVideoSrc(player,file){ 
    var myURL = window.URL || window.webkitURL 
    console.log('winurl='+myURL); 
    var fileURL = myURL.createObjectURL(file); 
    player.src=fileURL; 
    player.load(); 
    return; 
} 

Patrz również:

+0

cześć, która daje 'file = [plik obiektowy] winurl = [obiekt DOMURL]' ale potem 'fileURL = undefined' – damon

+0

Myślę, że to zadziała, jeśli zostanie uruchomiony chrome z włączoną flagą dostępu do pliku – damon

0

Czy próbowałeś

window.location.href = "URL"; 

zamiast window.url? Wygląda na to, że adres URL nie jest obsługiwany.

+0

window.URL współpracuje z firefox..came poprzez ten post właśnie teraz http://stackoverflow.com/questions/6755401/createobjecturl-is-returning-undefined-inchrome – damon

+0

hm, a następnie spróbuj debugować, jaka wartość jest w window.url, gdy metoda jest wykonywana –

+0

w oknie dziennika konsoli.URL drukuje wartość 'undefined' – damon

0

Spróbuj w ten sposób: -

var file = document.getElementById('fselect').files[0]; 
if(file){ 
    setVideoSrc(player,file); 
} 

Poniżej linia działa w Chrome i Firefox: -

window.URL.createObjectURL(file); 

Upewnij się, testujesz na wymienionych przeglądarek.

Patrz informacji

+0

Myślę, że nie powiedzie się w chrome. Proszę zobaczyć http://stackoverflow.com/questions/6755401/createobjecturl-is-returning-undefined-inchrome – damon

+0

@damon: Z której wersji Chrome korzystasz? –

Powiązane problemy