イベントハンドラーを使用した場合:
video.on("loadedmetadata", 関数() {...})
Firefox は、コールバックが呼び出されたときにビデオのサイズを適切に設定していないようです。クロムは完全に正常に動作します。Firefox でビデオのサイズを正しく取得する方法はありますか?
編集:デバッガーを置いてコードを手動で実行するとうまくいくようです。それはある種の競合状態であると私に信じさせました。しかし、メソッドが呼び出されているため、イベントが適切に発生する必要がある=ディメンションを設定する必要があるため、それは私には意味がありません。
コード スニペットを次に示します。
$("document").ready () ->
# Setup variables
video = $("#video")
toolbar = $("#toolbar")
canvas = $("#filter")
context = canvas.get(0).getContext('2d')
# Setup webcam
# I have a separate webcam module that simply wraps the behavior of
# navigator.getMediaStream. Works fine in chrome.
webcam.setup(() -> alert("Browser Unsupported."))
webcam.getMedia({video:true}, (localMediaStream) ->
video.attr("src", window.URL.createObjectURL(localMediaStream))
# Video loaded event
video.on "loadedmetadata", (e) ->
# Turn on video controls
video.prop("controls", true)
# Setup canvas dimensions and add border
width = video.width()
height = video.height()
canvas
.css("border", "solid")
.css("border-width", "1px")
.attr("width", width)
.attr("height", height)
# In firefox, the width and height are 0! In chrome, they
# are correct. I tested videoWidth/videoHeight and most other
# variables. Does not work.