传递参数时未明确声明javascript Chrome扩展 [英] Parameter passed without explicitly stating javascript Chrome extension

查看:124
本文介绍了传递参数时未明确声明javascript Chrome扩展的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

因此,这个扩展例子为媒体流调用一个选择器,然后 gotStream(stream)清楚地寻找一个mediaObject的参数。但是,当 gotStream 函数作为第二个参数传递给 navigator.webkitGetUserMedia 时,不会传入任何参数。



这里是代码

 函数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。);


函数onAccessApproved(id){
if(!id){
console.log(Access rejected。);
return;

navigator.webkitGetUserMedia(
audio:false,
video:{mandatory:{chromeMediaSource:desktop,
chromeMediaSourceId:id}}
},gotStream,getUserMediaError);
}

之前我看到过这种类型的调用,我只是不明白他们如何工作,请帮助。

解决方案

是否存在某种错误,或者您只是不明白工作原理?



navigator.webkitGetUserMedia 预计3个参数。一个用于配置数据,一个用于调用成功的函数(成功 callback ),另一个用于调用错误。

注意它期望一个功能。此代码按名称传递函数的引用;它会被调用相应的参数(从 webkitGetUserMedia )。



考虑这段代码,它在同样的方式:

函数hello(subject){alert(Hello,+ subject +!);}函数passWorldTo(回调函数) {callback(world); } passWorldTo(hello);


So this example chrome extension calls a selector for media streams and then the gotStream(stream) clearly is looking for a parameter of a mediaObject. However, when the gotStream function is passed in as the second parameter to navigator.webkitGetUserMedia no parameter is passed in. It merely remains states the function name.

Here is the code

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

I've seen these kinds of calls before and I just don't get how they work, please help.

解决方案

Is there an error of some sorts, or you just don't understand how that works?

navigator.webkitGetUserMedia expects 3 arguments. One for configuration data, one for a function to call on success (a success callback) and one to call on error.

Note that it expects a function. This code passes a reference to the function by name; it will be called with the appropriate parameter (from within webkitGetUserMedia).

Consider this code, it works in the same manner:

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

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

passWorldTo(hello);

这篇关于传递参数时未明确声明javascript Chrome扩展的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆