首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dokuwiki和jquery互连

dokuwiki和jquery互连
EN

Stack Overflow用户
提问于 2010-03-09 16:01:09
回答 2查看 656关注 0票数 1

Dokuwiki我们的原型,我的站点使用Jquery。

如果有另一种方法来修改Dokuwiki javascript,而不是使用jQuery.noConflict(),或者/和在我的jQuery上使用var $j = jQuery?

我打开Dokuwiki上的所有.js文件,搜索"$(“并将其替换为"$DW(”),它就像一个护身符一样工作,但我必须处理其中包含javascript的每个Dokuwiki插件。

那么,如何在原型库/ Dokuwiki中更改"$“呢?

EN

回答 2

Stack Overflow用户

发布于 2010-03-09 16:33:45

你做错了。只需在prototype之后包含jQuery,然后立即调用jQuery.noConflict()即可。并且在你的代码中总是写成

jQuery(..) / jQuery.[functionname](...)而不是通常的$表示法。

这样你就可以让dokuwiki的整个现有javascript源代码和所有现有插件保持不变。你可以在你的代码中使用jQuery。

或者,如果您仍然需要较短的句柄,而不是编写jQuery,则可以为jQuery创建一个别名

代码语言:javascript
复制
<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
EN

Stack Overflow用户

发布于 2020-10-16 19:06:59

我这样做的方式是创建一个非常简单的“插件”,它除了在每个页面的页眉部分包含一个额外的JS文件外,什么也不做。

您所需要做的就是在lib/plugins下添加一个新目录,其中包含一个"plugin.info.txt“(参见其他插件的示例)和一个名为"action.php”的文件(加上您想要加载的任何文件,在本例中是一个.js文件)。

这个"action.js“文件应该只包含一个扩展了"DokuWiki_Action_Plugin”的类,这个类有两个函数:

首先,“注册”,在元数据输出时注册一个事件处理程序:

代码语言:javascript
复制
public function register(Doku_Event_Handler $controller) {
    $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this,
            'handle_tpl_metaheader_output');
}

其次,实际的事件处理程序,它很简单:

代码语言:javascript
复制
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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2407452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档