【问题标题】:Intergating dokuwiki and jquery集成dokuwiki和jquery
【发布时间】:2011-01-25 08:00:13
【问题描述】:

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

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

我打开 Dokuwiki 上的所有 .js 文件,搜索“$(”并将其替换为“$DW(”,它就像一个魅力,但我必须处理每个包含 javascript 的 Dokuwiki 插件。

那么,如何更改原型库/ Dokuwiki 中的“$”?

【问题讨论】:

    标签: javascript jquery dokuwiki


    【解决方案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()

    【讨论】:

    • 我的 JQuery 及其生产站点上有大量功能,我不想更改它们。你是建议编辑所有这些还是我可以这样做? jQuery( $(function(){ ... 我的 jquery... }) $(document).ready(function(){ ... 我的 doc.ready jquery... }) );
    【解决方案2】:

    我这样做的方法是创建一个非常简单的“插件”,除了在每个页面的标题部分中包含一个额外的 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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多