我一直在阅读the source code here,它会检测控制台何时打开,如果是,则会播放音频元素。
我对一些事感到困惑。
首先,我无法弄清楚它是如何检测控制台是否已打开。
if( audioCheck === true || (window.Firebug && window.Firebug.chrome && window.Firebug.chrome.isInitialized)) {
play();
}
以下行返回undefined,因此audioCheck === true
触发play()
函数。
window.Firebug && window.Firebug.chrome && window.Firebug.chrome.isInitialized
以下行将audioCheck
设置为true
。我对__defineGetter__
做了一些研究,但对我来说仍然不清楚。
audioElement.__defineGetter__('id', function() {
audioCheck = true;
});
任何人都可以解释这是做什么的吗?经过多次研究,我无法弄明白。
最后完全抛弃我的是,如果我删除此行,则音频不会播放:
console.log("Check the console: ", audioElement);
这真的很奇怪,虽然这应该只将信息记录到控制台,并且对声音是否播放没有任何影响,但我想这必须与{{1}重新绑定}
这里有很多问题,所以任何可以解决这些问题的亮点都会受到高度赞赏。
答案 0 :(得分:1)
我不知道确认这个 1 的任何来源,但很可能你遇到的行为是现代浏览器的影响。控制台通常会这样做 - 如果您发出var RespSchema = new mongoose.Schema({
surveyResponseId : {type: mongoose.Schema.Types.ObjectId,
ref: 'SurveySResponsechema',
required: true,
index : true},
customerSurveyId : {type: mongoose.Schema.Types.ObjectId,
ref: 'CustomerSurveySchema',
required: true,
index : true},
version : Number,
question : Number,
responseType : String, // single or multiple-choice not implemented
response : [String],
responseNum : [Number],
created_dt : { type: Date, default: Date.now }
var SurveyResponseSchema = new mongoose.Schema({
customerSurveyId : {type: mongoose.Schema.Types.ObjectId,
ref: 'CustomerSurveySchema',
required: true,
index : true},
deviceId : String, // whch Android Tableet is runing this
version : Number,
taken : Boolean,
created_dt : { type: Date, default: Date.now }
});
mongoose.model('SurveyResponse', SurveyResponseSchema);
mongoose.model('Resp', RespSchema);
var Resp = mongoose.model('Resp');
var SurveyResponse = mongoose.model('SurveyResponse');
Resp.find({created_dt: {"$gt": new Date("2016-03-31T09:20:00Z")}})
.sort('customerSurveyId' )
.populate('SurveyResponse')
.exec(function(err, results) {
if (err) return err;
console.log('results is:', JSON.stringify(results));
});
并传递HTML元素作为其参数,控制台将尝试显示其详细信息,例如ID。并且console.log()
行确保当浏览器访问ID时,调用伪getter函数(__defineGetter__
只是一种非标准的设置方法 - 或替换 - 对象 2 )。相当聪明,不是吗?
1 可能需要对各种浏览器的源代码进行分析才能完全理解并验证问题。
2 在MDN上阅读有关getter的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get(请注意,标准方法,如其中所述,是致电__defineGetter__()
)。