我认为这是一个纯粹的技术问题,即使我说的是在这种情况下使用wordpress以及特定的插件和短代码。
我在Wordpress SmoothState.js中使用。一切正常,除了两件事:
1 - 使用Google Charts的wordpress的“Visualizer”或“Inline Google Spreadsheet Viewer”插件。我找不到调用“回调”的函数。
2 - 使用MediaElement Wordpress时,同样适用于带有原生短代码和短代码的播放列表的原生音频播放器。出现在第一页,但后来我不知道在回调时要调用什么来重新显示玩家。
如何解决?
也许我可以发布更具技术性的内容,但如果我知道在哪里寻找要调用的函数,我就不会在这里发布这个问题了。
答案 0 :(得分:0)
我看到您正在使用jQuery的isFired
控件,如博文SmoothState.js & WordPress (h / t:this Github issue) 子>
在该帖子的评论中,作者说:
是的,这就是我要进入插件找到已注册的脚本然后取消注册并注册它们有点痛苦但是目前我不认为还有另一种方法可以做到这一点。
理想的解决方案是编写能找到所有已注册脚本的内容并将其全部加载而不重复它们。
我使#2 工作的目的是在我将SmoothState排入队列时将MediaElement排入队列:
wp_enqueue_style( 'wp-mediaelement' );
wp_enqueue_script( 'wp-mediaelement' );
当页面上有媒体短代码时,WP只会将其排队。如果我们从没有它的另一个页面开始,当SS加载包含media元素的页面时,脚本不会入队。
我的日历插件有同样的问题#1 ,除了在我的SS上排队脚本之外,我还必须在回调中启动主函数(声明为全局),见下文。观察:
functions.php
工作不会削减交易。FullCalendar插件(简化):
var editor_data = new Function();
jQuery(document).ready(function($)
{
editor_data = function(){
$('#calendar').fullCalendar({ options });
}
editor_data();
});
SmoothState插件(简化):
jQuery(document).ready(function($) {
var $body = $('html, body'),
content = $('#page').smoothState({
onEnd : {
duration: 0, // Duration of the animations, if any.
render: function (url, $container, $content) {
$container.html($content);
$(document).ready();
$(window).trigger('load');
}
},
callback: function(url, $container, $content) {
editor_data();
}
}).data('smoothState');
});
(function($, undefined) {
var isFired = false;
var oldReady = jQuery.fn.ready;
$(function() {
isFired = true;
$(document).ready();
});
jQuery.fn.ready = function(fn) {
if(fn === undefined) {
$(document).trigger('_is_ready');
return;
}
if(isFired) {
window.setTimeout(fn, 1);
}
$(document).bind('_is_ready', fn);
};
})(jQuery);