2012-05-10 43 views
6

tôi đã được học một số javascript, để chọn một tập tin và sử dụng nó để tạo ra một objectUrl có thể được thiết lập như là src của một html5 video .Tôi đang cố gắng này ra trong chrome phiên bản 18.0 .1025.162 trên ubuntu lucid và sử dụng tệp html cục bộ có tệp javascript và tệp phương tiện trong cùng một thư mục.javascript window.URL là undefined chức năng

Tôi có thể chọn tệp video bằng yếu tố đầu vào và khi tôi nhấp vào play link, chức năng javascript playVideo() được thực thi.

<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 tập tin là

$(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); 
    }  
} 

Khi tôi không chọn bất kỳ tập tin và nhấn vào playlink, phát video mặc định và giao diện điều khiển log nói no file chosen -Như mong đợi.

Lỗi xảy ra khi Tôi chọn tệp video và sau đó nhấp vào liên kết phát sóng. Sau đó, phương thức playVideo() gọi setVideoSrc() trong đó nhật ký bảng điều khiển cho biết window.URL' is undefined`

Tại sao điều này xảy ra? Ai đó có thể giúp tôi sửa lỗi này? Đây là giao diện điều khiển dữ liệu ghi nhận

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) là Gecko cụ thể. Trình duyệt mà bạn đang sử dụng? –

+0

Tôi đang sử dụng ..chrome, có cách nào độc lập với trình duyệt để thực hiện việc này không? – damon

+1

Theo hiểu biết của tôi, không có (IE và Opera dường như không hỗ trợ điều này). Tuy nhiên, Chrome có tương đương ('window.webkitURL') [theo MDN] (https://developer.mozilla.org/en/DOM/window.URL.createObjectURL). –

Trả lời

6

Sử dụng window.webkitURL trong Chrome.

này whould làm việc trong cả Chrome và 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; 
} 

Xem thêm:

+0

hi, cung cấp cho 'tệp = [đối tượng Tệp] winurl = [đối tượng DOMURL]' nhưng sau đó 'fileURL = undefined' – damon

+0

Tôi nghĩ rằng điều này sẽ hoạt động nếu chrome được bắt đầu với cờ truy cập tệp được bật – damon

0

Bạn đã thử

window.location.href = "URL"; 

thay vì window.url? Có vẻ như url không được hỗ trợ tính năng.

+0

window.URL làm việc với firefox..came qua bài đăng này chỉ là bây giờ http://stackoverflow.com/questions/6755401/createobjecturl-is-returning-undefined-in-chrome – damon

+0

hm, sau đó cố gắng để gỡ lỗi, những gì giá trị trong window.url khi phương thức được thực thi –

+0

trong cửa sổ nhật ký bảng điều khiển.URL in giá trị 'undefined' – damon

0

Hãy thử cách này: -

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

Dưới dòng hoạt động trên Chrome và Firefox: -

window.URL.createObjectURL(file); 

Hãy chắc chắn rằng, bạn đang thử nghiệm trên các trình duyệt đề cập.

Tham khảo thông tin này

+0

Tôi nghĩ rằng nó không thành công trong chrome. Vui lòng xem http://stackoverflow.com/questions/6755401/createobjecturl-is-returning-undefined-in-chrome – damon

+0

@damon: Bạn đang sử dụng phiên bản chrome nào? –

Các vấn đề liên quan