我无法在drupal模块中正常执行函数。这是projekktor HTML5视频播放器的第三方集成。我无法在drupal.org上找到任何有用的信息。
(function($) {
Drupal.behaviors.projekktor = {
attach: function(context, settings) {
if ($(settings.projekktor.instances).length) {
$('[id^="projekktor-"]', context).once('projekktor', function() {
$(this).each(function() {
var id = $(this).attr('id');
var jsoptions = settings.projekktor.instances[id];
var jspath = settings.projekktor.jspath;
// @WTF: returns 'projekktor is not defined' if $.get isn't used
$.get(jspath, function() {
projekktor('#' + id, jsoptions);
});
});
})
}
}
};
})(jQuery);
projekktor库正在加载。但由于某种原因,除非我还在$ .get函数中添加库,否则播放器不会初始化。这导致事情变得非常缓慢。
设置包含从php传递的数组。 'jspath'只是库文件的一个字符串。 'jsoptions'是球员的选择。那部分工作正常。我无法让玩家正确启动。
它从内联$(文档).ready函数初始化正常。但这不是一个可行的选择。
有什么想法吗?
修改 我发现为什么在查看未经明确的projekktor代码之后这不起作用。似乎函数声明如下:
jQuery(function($) {
projekktor = $p = function() {
/* projekktor code in here */
}
});
这是文档就绪范围内的函数声明。
所以现在我有点不知道如何使用标题脚本(没有$ .get)在我的函数中触发它。
鉴于它是第三方库被集成到drupal模块中,我有点麻烦。
答案 0 :(得分:0)
在dom准备就绪后声明全局projekktor
。所以你应该在dom准备好之后使用它。将代码放入dom ready回调函数中。
尝试:
(function ($) {
$(function () {
Drupal.behaviors.projekktor = {
attach: function (context, settings) {
if ($(settings.projekktor.instances).length) {
$('[id^="projekktor-"]', context).once('projekktor', function () {
$(this).each(function () {
var id = $(this).attr('id');
var jsoptions = settings.projekktor.instances[id];
var jspath = settings.projekktor.jspath;
projekktor('#' + id, jsoptions);
});
})
}
}
};
});
})(jQuery);
或者只是:
jQuery(function ($) {
Drupal.behaviors.projekktor = {
attach: function (context, settings) {
if ($(settings.projekktor.instances).length) {
$('[id^="projekktor-"]', context).once('projekktor', function () {
$(this).each(function () {
var id = $(this).attr('id');
var jsoptions = settings.projekktor.instances[id];
var jspath = settings.projekktor.jspath;
projekktor('#' + id, jsoptions);
});
})
}
}
};
});