【发布时间】:2012-03-25 04:09:29
【问题描述】:
我无法在 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.ini 传递的数组。 'jspath' 只是库文件的字符串。 'jsoptions' 是播放器选项。那部分工作正常。我就是无法让播放器正确启动。
它确实可以从内联 $(document).ready 函数初始化。但这在这里并不是一个真正可行的选择。
有什么想法吗?
编辑: 在查看了未缩小的 projekktor 代码后,我发现了为什么这不起作用。似乎函数是这样声明的:
jQuery(function($) {
projekktor = $p = function() {
/* projekktor code in here */
}
});
它是文档就绪范围内的函数声明。
所以现在我对如何使用头脚本(没有 $.get)在我的函数中触发它有点茫然。
考虑到它是一个第三方库被集成到一个 drupal 模块中,我有点束手无策。
【问题讨论】:
标签: jquery drupal jquery-plugins