参数传递时未明确声明javascript Chrome扩展程序

时间:2014-10-02 20:03:23

标签: javascript google-chrome google-chrome-extension

因此,此示例chrome扩展调用媒体流的选择器,然后gotStream(stream)显然正在寻找mediaObject的参数。但是,当gotStream函数作为第二个参数传入navigator.webkitGetUserMedia时,没有传入任何参数。它只是状态函数名称。

这是代码

function gotStream(stream) {
  console.log("Received local stream");
  var video = document.querySelector("video");
  video.src = URL.createObjectURL(stream);
  localstream = stream;
  stream.onended = function() { console.log("Ended"); };
}

function getUserMediaError() {
  console.log("getUserMedia() failed.");
}

function onAccessApproved(id) {
  if (!id) {
    console.log("Access rejected.");
    return;
  }
  navigator.webkitGetUserMedia({
      audio:false,
      video: { mandatory: { chromeMediaSource: "desktop",
                            chromeMediaSourceId: id } }
  }, gotStream, getUserMediaError);
}

之前我已经看过这些电话了,我只是不知道它们是如何工作的,请帮忙。

1 个答案:

答案 0 :(得分:0)

是否存在某种错误,或者您只是不明白它是如何工作的?

navigator.webkitGetUserMedia expects 3 arguments。一个用于配置数据,一个用于调用成功的函数(成功回调),另一个用于调用错误。

请注意,它需要功能。此代码按名称传递对函数的引用;它将使用适当的参数调用(来自webkitGetUserMedia)。

考虑这段代码,它的工作方式相同:

function hello(subject) {
  alert("Hello, " + subject + "!");
}

function passWorldTo(callback) {
  callback("world");  
}

passWorldTo(hello);