整合 dokuwiki 和 jquery
Dokuwiki 美国原型,我的网站使用 Jquery。
如果有另一种方法可以改变 Dokuwiki javascript,而不是在我的 jQuery 上使用 jQuery.noConflict() 或/和 var $j = jQuery?
我打开 Dokuwiki 上的所有 .js 文件,搜索“$(”并将其替换为“$DW(”,它的工作原理就像一个魅力,但我必须处理每个包含 javascript 的 Dokuwiki 插件。
那么,如何改变原型库/ Dokuwiki 中的“$”?
Dokuwiki us prototype, my site use Jquery.
If there is another way to alter Dokuwiki javascript, instead using jQuery.noConflict(), or/and var $j = jQuery on my jQuery?
I open all .js files on Dokuwiki, search for "$(" and replace it with "$DW(", and it works like a charms, but I had to deal with every Dokuwiki plugins that has javascript in it.
So, how to alter "$" in prototype libaries/ Dokuwiki?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你的做法是错误的。只需在原型之后包含 jQuery,然后立即调用 jQuery.noConflict() 即可。并且在代码中始终编写
jQuery(..)
/jQuery.[functionname](...)
而不是通常的$
表示法。这样您就可以保持 dokuwiki 的整个现有 javascript 源代码和所有现有插件不变。您可以在代码中使用 jQuery。
或者,如果您仍然想要一个短句柄而不是编写 jQuery,您可以为 jQuery 创建一个别名。
有关详细信息,请检查 jQuery.noConflict()
You are doing it the wrong way around. Just include jQuery after prototype then immediately make a call to
jQuery.noConflict()
. And in your code always writejQuery(..)
/jQuery.[functionname](...)
instead of the usual$
notation.This way you can leave the whole existing javascript source of dokuwiki and all existing plugins untouched. And you can use jQuery in your code.
Or if you still want a short handle instead of writing jQuery you could create an alias for jQuery
For more info check jQuery.noConflict()
我这样做的方法是创建一个非常简单的“插件”,它除了在每个页面的标题部分包含一个额外的 JS 文件之外什么也不做。
您需要做的就是在
lib/plugins
下添加一个新目录,其中包含一个“plugin.info.txt”(请参阅其他插件的示例)和一个名为“action.php”的文件(加上您想要加载的任何文件,在本例中为 .js 文件)。该“action.js”文件应该只包含一个扩展“
DokuWiki_Action_Plugin
”的类,该类具有两个功能:首先,“注册”以在输出元数据时注册一个事件处理程序:
其次,实际的事件处理程序,很简单:
就是这样。然后在JS文件中做你想做的事。
编辑:当然,您仍然需要使用“
jQuery()
”而不是“$()
”来引用 jQuery。The way I did that was to create a very simple "plugin" that does nothing else than include an extra JS file in each page's header section.
All you need to do is to add a new directory under
lib/plugins
which contains a "plugin.info.txt" (see the other plugins for examples) and one file called "action.php" (plus any files you want to load, in this case a .js file).That "action.js" file should just contain a class that extends "
DokuWiki_Action_Plugin
" with two functions:Firstly, "register" to, well, register an event handler for when metadata is output:
Secondly, the actual event handler, which is simply:
And that's it. Then do as you please in the JS file.
Edit: of course, you still need to refer to jQuery by using "
jQuery()
" instead of "$()
".