Dokuwiki us原型,我的网站使用Jquery。
如果有另一种方法来改变Dokuwiki javascript,而是在我的jQuery上使用jQuery.noConflict()或/和var $ j = jQuery?
我打开Dokuwiki上的所有.js文件,搜索“$(”并将其替换为“$ DW(”,它就像一个魅力,但我必须处理每个有javascript的Dokuwiki插件。
那么,如何在原型库/ Dokuwiki中改变“$”?
答案 0 :(得分:1)
你这样做是错误的。只需在原型后包含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()
答案 1 :(得分:0)
我这样做的方法是创建一个非常简单的“插件”,除了在每个页面的页眉节中包含一个额外的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。