无法访问VideoJS flash对象
我正在制作电台直播节目。我尝试在没有实际video.js javascript文件的情况下使用VideoJS-我只使用Flash部分-video-js.swf文件 这是我的index.html(这是手动编写的代码): 在这个地方一切都很好-如果我写无法访问VideoJS flash对象,flash,video-streaming,video.js,Flash,Video Streaming,Video.js,我正在制作电台直播节目。我尝试在没有实际video.js javascript文件的情况下使用VideoJS-我只使用Flash部分-video-js.swf文件 这是我的index.html(这是手动编写的代码): 在这个地方一切都很好-如果我写 autoplay=true 我的页面开始播放音乐。。。只有铬 如果我尝试使用Javascript访问Flash对象(当然是在加载文档之后): 或 或 它也能起作用。。。只有镀铬的 在FF、IE、Opera等最新版本中,我总是会遇到以下错误: doc
autoplay=true
我的页面开始播放音乐。。。只有铬
如果我尝试使用Javascript访问Flash对象(当然是在加载文档之后):
或
或
它也能起作用。。。只有镀铬的
在FF、IE、Opera等最新版本中,我总是会遇到以下错误:
document.getElementById('radio').vjs_play is not a function
document.getElementById('radio').vjs_pause is not a function
document.getElementById('radio').vjs_setProperty is not a function
那么,我最简单的代码有什么问题?我怎样才能像现在在Chrome中一样访问Flash对象的方法
JSFiddle:
/*
显然,在JSFIDLE中,下面的代码中会出现错误,因为video-js.swf无法从中加载任何内容rtmp://192.168.1.6/air -但在我的本地电脑上,所有这些代码在Chrome中都像一个符咒,而不是在FF/IE/Opera中
*/
setTimeout(函数(){
document.getElementById('radio').vjs_play();
}, 5000);代码>
swf不能单独使用,所以我不推荐它
但如果你选择继续走这条路,你可以看看Flash技术是如何使用swf的。具体来说,当API方法可用时,swf可以调用它
虽然这并不总是稳定的,所以也有一个。swf不应该单独使用,所以我不推荐它
但如果你选择继续走这条路,你可以看看Flash技术是如何使用swf的。具体来说,当API方法可用时,swf可以调用它
虽然这并不总是稳定的,所以也有一个。swf不应该单独使用,所以我不推荐它
但如果你选择继续走这条路,你可以看看Flash技术是如何使用swf的。具体来说,当API方法可用时,swf可以调用它
虽然这并不总是稳定的,所以也有一个。swf不应该单独使用,所以我不推荐它
但如果你选择继续走这条路,你可以看看Flash技术是如何使用swf的。具体来说,当API方法可用时,swf可以调用它
虽然这并不总是稳定的,所以也有一个。问题是-您应该始终设置对象标记a宽度和高度:
<object ... width="100%" height="100%">...</object>
。。。
但是,如果将此对象放置在没有大小的某个div中:
<div>
<object ... width="100%" height="100%">...</object>
</div>
...
您的Flash对象将无法工作…因为它的大小变为0x0像素
(好吧,它只能在像谷歌Chrome这样的好浏览器中工作)
我使用Angular的ng transclude指令和div块:
转置后,我的HTML是:
<div ng-transclude="">
<object ... width="100%" height="100%">...</object>
</div>
...
当然,它的大小是0x0像素,而Flash无法工作
然后我设置1x1的尺寸,一切都开始按预期工作:
<div ng-transclude="">
<object ... width="1" height="1">...</object>
</div>
...
我花了大量的时间,才得出结论:)问题是-您应该始终将对象标记设置为宽度和高度:
<object ... width="100%" height="100%">...</object>
。。。
但是,如果将此对象放置在没有大小的某个div中:
<div>
<object ... width="100%" height="100%">...</object>
</div>
...
您的Flash对象将无法工作…因为它的大小变为0x0像素
(好吧,它只能在像谷歌Chrome这样的好浏览器中工作)
我使用Angular的ng transclude指令和div块:
转置后,我的HTML是:
<div ng-transclude="">
<object ... width="100%" height="100%">...</object>
</div>
...
当然,它的大小是0x0像素,而Flash无法工作
然后我设置1x1的尺寸,一切都开始按预期工作:
<div ng-transclude="">
<object ... width="1" height="1">...</object>
</div>
...
我花了大量的时间,才得出结论:)问题是-您应该始终将对象标记设置为宽度和高度:
<object ... width="100%" height="100%">...</object>
。。。
但是,如果将此对象放置在没有大小的某个div中:
<div>
<object ... width="100%" height="100%">...</object>
</div>
...
您的Flash对象将无法工作…因为它的大小变为0x0像素
(好吧,它只能在像谷歌Chrome这样的好浏览器中工作)
我使用Angular的ng transclude指令和div块:
转置后,我的HTML是:
<div ng-transclude="">
<object ... width="100%" height="100%">...</object>
</div>
...
当然,它的大小是0x0像素,而Flash无法工作
然后我设置1x1的尺寸,一切都开始按预期工作:
<div ng-transclude="">
<object ... width="1" height="1">...</object>
</div>
...
我花了大量的时间,才得出结论:)问题是-您应该始终将对象标记设置为宽度和高度:
<object ... width="100%" height="100%">...</object>
。。。
但是,如果将此对象放置在没有大小的某个div中:
<div>
<object ... width="100%" height="100%">...</object>
</div>
...
您的Flash对象将无法工作…因为它的大小变为0x0像素
(好吧,它只能在像谷歌Chrome这样的好浏览器中工作)
我使用Angular的ng transclude指令和div块:
转置后,我的HTML是:
<div ng-transclude="">
<object ... width="100%" height="100%">...</object>
</div>
...
当然,它的大小是0x0像素,而Flash无法工作
然后我设置1x1的尺寸,一切都开始按预期工作:
<div ng-transclude="">
<object ... width="1" height="1">...</object>
</div>
...
我花了大量的时间,才发现:)同样,我不知道这是怎么可能的,但是如果你使用Grunt的,它会破坏你的Flash对象,因为livereload正在修改你的DOM
所以,我只需要从connect任务的中间件阵列中删除lrSnippet:
var LIVERELOAD_PORT = 35729;
var lrSnippet = require('connect-livereload')({
'port': LIVERELOAD_PORT
});
// and then in config:
connect: {
localhost: {
options: {
base: {
path: 'app/assets',
options: {
index: 'application.html'
}
},
middleware: function(connect) {
return [
lrSnippet, // remove it (well, if you are using Chrome, do not remove livereload, it will work fine in Chrome)
mountFolder(connect, 'tmp'),
mountFolder(connect, 'app/assets')
]
}
}
}
}
另外,我不知道这是怎么可能的,但是如果你使用Grunt的,它会破坏你的Flash对象,因为livereload正在修改你的DOM
所以,我只需要从connect任务的中间件阵列中删除lrSnippet:
var LIVERELOAD_PORT = 35729;
var lrSnippet = require('connect-livereload')({
'port': LIVERELOAD_PORT
});
// and then in config:
connect: {
localhost: {
options: {
base: {
path: 'app/assets',
options: {
index: 'application.html'
}
},
middleware: function(connect) {
return [
lrSnippet, // remove it (well, if you are using Chrome, do not remove livereload, it will work fine in Chrome)
mountFolder(connect, 'tmp'),
mountFolder(connect, 'app/assets')
]
}
}
}
}
另外,我不知道这是怎么可能的,但是如果你使用Grunt的,它会破坏你的Flash对象,因为livereload正在修改你的DOM
所以,我没有