Dokuwiki我们的原型,我的站点使用Jquery。
如果有另一种方法来修改Dokuwiki javascript,而不是使用jQuery.noConflict(),或者/和在我的jQuery上使用var $j = jQuery?
我打开Dokuwiki上的所有.js文件,搜索"$(“并将其替换为"$DW(”),它就像一个护身符一样工作,但我必须处理其中包含javascript的每个Dokuwiki插件。
那么,如何在原型库/ Dokuwiki中更改"$“呢?
发布于 2010-03-09 16:33:45
你做错了。只需在prototype之后包含jQuery,然后立即调用jQuery.noConflict()即可。并且在你的代码中总是写成
jQuery(..) / jQuery.[functionname](...)而不是通常的$表示法。
这样你就可以让dokuwiki的整个现有javascript源代码和所有现有插件保持不变。你可以在你的代码中使用jQuery。
或者,如果您仍然需要较短的句柄,而不是编写jQuery,则可以为jQuery创建一个别名
<script ... include prototype ..</script>
<script ... include jquery ..</script>
<script ...>
var jQ = jQuery.noConflict();
//do something with prototype
$("findme");
jQ("div hideme").hide();
</script>有关更多信息,请查看jQuery.noConflict()
发布于 2020-10-16 19:06:59
我这样做的方式是创建一个非常简单的“插件”,它除了在每个页面的页眉部分包含一个额外的JS文件外,什么也不做。
您所需要做的就是在lib/plugins下添加一个新目录,其中包含一个"plugin.info.txt“(参见其他插件的示例)和一个名为"action.php”的文件(加上您想要加载的任何文件,在本例中是一个.js文件)。
这个"action.js“文件应该只包含一个扩展了"DokuWiki_Action_Plugin”的类,这个类有两个函数:
首先,“注册”,在元数据输出时注册一个事件处理程序:
public function register(Doku_Event_Handler $controller) {
$controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this,
'handle_tpl_metaheader_output');
}其次,实际的事件处理程序,它很简单:
public function handle_tpl_metaheader_output(Doku_Event $event, $param) {
global $ID, $conf, $INFO;
if (page_exists($ID)) {
$event->data["script"][] = array (
"type" => "text/javascript",
"src" => DOKU_BASE."lib/plugins/[YOURPLUGINNAME]/[YOURJSFILENAME].js"
);
}
}就是这样。然后在JS文件中随心所欲地执行。
编辑:当然,您仍然需要使用"jQuery()“而不是"$()”来引用jQuery。
https://stackoverflow.com/questions/2407452
复制相似问题