无法访问VideoJS flash对象

无法访问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

我正在制作电台直播节目。我尝试在没有实际video.js javascript文件的情况下使用VideoJS-我只使用Flash部分-video-js.swf文件

这是我的index.html(这是手动编写的代码):

在这个地方一切都很好-如果我写

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

所以,我没有