是否可以获取不在全局命名空间中且未附加到DOM的视频对象的引用,然后将其附加到DOM中的某个节点?
修改
关键是我无法访问创建和启动视频对象的匿名函数。就我而言,此步骤由运行时的某个外部脚本完成。我的目标是从该函数外部获取对v
的引用。
// This code is executed by some external script attached to my
// application at runtime. I don't have access to the internals
// of this function. I don't even know what the variable is named.
(function() {
var v = document.createElement('video');
v.src = 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4';
// `v` will play, but you will only hear the audio.
// actual video won't render because it's not attached
// to the DOM
v.play(true);
}());
执行document.querySelector('video')
会返回一个空集,因为视频尚未附加到文档中。
答案 0 :(得分:2)
据我所知,从一些研究和测试来看,没有可靠的方法来实现这一目标。除非他们将元素附加到DOM,全局变量或以其他方式公开它,否则没有好的方法来访问它。
如果他们在没有将其附加到DOM的情况下自动播放代码中的视频,则问题出在他们的最后,他们应该修复它,或者您最好在其他地方寻找所需的功能。我的0.02美元。
答案 1 :(得分:1)
现在设置的方式是不可能的,内部的变量是在本地声明的,因此无法访问。如果您可以修改脚本,则可以将变量放在全局命名空间中,然后您可以访问它:
window.myScriptNamespace.v = document.createElement('video');
window.myScriptNamespace.v.src = 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4';
// `v` will play, but you will only hear the audio.
// actual video won't render because it's not attached
// to the DOM
window.myScriptNamespace.v.play(true);
但是,如果你不能改变它,我担心你没有多少可以做,它的概念相同:
Is it possible to access a function local variable from outside of the function?