首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我也使用RequireJS时,如何使用视频use插件?

问当我也使用RequireJS时,如何使用视频use插件?
EN

Stack Overflow用户
提问于 2015-12-08 18:55:42
回答 1查看 3.2K关注 0票数 5

我正在工作的网站,其中包括一些JS代码,我不控制。该代码使用RequireJS加载依赖项和所有内容。

免责声明:我是RequireJS的菜鸟。我了解基本知识,但差不多就是这样.

在我的网站上,我需要使用VideoJS。VideoJS可以与RequireJS一起工作,也可以不使用RequireJS,但据我所知,如果RequireJS在页面的某个位置使用,则没有它我就不能使用VideoJS。

因此,我在VideoJS中加载了RequireJS,如下所示:

代码语言:javascript
复制
var MyRequire = requirejs.config({
    baseUrl: '/_/js',
    paths: {
        videojs: 'http://vjs.zencdn.net/5.3.0/video'
    }
});
MyRequire(["videojs"], function(videojs) {
    videojs('myPlayer', {}, function(){
        console.log('...');
    });
});

而且起作用了。

但我想使用一个VideoJS插件来管理预录制广告。(https://github.com/dirkjanm/videojs-preroll)

我尝试在RequireJS中包含插件脚本,但是一旦插件试图访问视频is对象,我就会收到一个错误,告诉我没有定义视频is。

我的猜测是,当我将VideoJS作为一个RequireJS模块加载时,它不在全局范围内,我使用的插件是在全局范围内查找VideoJS,这就是为什么我会得到这个错误。

我是否可以使用VideoJS而不将它作为RequireJS模块加载?或者如何帮助插件找到VideoJS对象?

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

发布于 2015-12-09 01:57:35

您应该从需求中使用希姆,并将视频use注入到全局范围中。我为你的案子做了一个代码示例。我对它进行了测试,它运行正常(您可以看到下面的图像):

装载令:

  1. “视频”
  2. “全球范围内的附加视频js”
  3. "ads“(此时,视频in var已经在窗口对象中)
  4. “预录”

Requirejs分析命令

  1. 要求(“预录”、“广告”-入口点)
  2. “预录”--要求“广告”
  3. “广告”--要求“全球范围内的附加视频js”
  4. “在全局范围内添加视频-js”要求“视频js”,并在窗口对象中添加视频js var。

app.js

代码语言:javascript
复制
requirejs.config({
    paths: {
        "videojs": "./libs/video",
        "ads": "./libs/videojs.ads",
        "preroll": "./libs/videojs-preroll"
    },
    shim:{
        "preroll": {
            deps: ['ads']
        },
        "ads": {
            deps: ["add-video-js-in-global-scope"],
        }
    }
});

define("add-video-js-in-global-scope",["videojs"], function(videojs) {
    window.videojs = videojs;
});

requirejs(["preroll", "ads"], function (preroll,ads) {
    // preroll and ads will be undefined because it's not amd.
    videojs('idOne', {}, function () {
        var player = this;
        player.ads(); // initialize the ad framework
        // your custom ad integration code
    });
});

​

index.html

​

代码语言:javascript
复制
<html>
<head>
</head>
<body>
    <script data-main="app.js" src="//cdnjs.cloudflare.com/ajax/libs/require.js/2.1.22/require.js"></script>
    <div id="idOne"></div>
</body>
</html>

​

结果:

档案:

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34163777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档