首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让菜单项在Joomla3.2中执行Javascript?

如何让菜单项在Joomla3.2中执行Javascript?
EN

Stack Overflow用户
提问于 2013-12-01 14:10:51
回答 2查看 4K关注 0票数 2

在3.2之前,我可以将菜单项类型设置为“外部链接”,然后将链接设置为

"javascript:myFunction()“

单击时,菜单项将调用JavaScript函数。但是在我升级到3.2之后,当我做同样的事情并试图保存菜单项时,菜单项上写着“保存不允许”。

3.2阻止了这种使用吗?如果是,如何让菜单项执行我的JS函数?

EN

回答 2

Stack Overflow用户

发布于 2014-02-04 13:19:35

不久前,我在Joomla版本3.2.1中提到了这个问题,它是关于Skype链接的。

skype:我的名字

这与该文件中允许并定义的协议类型有关:

/administrator/components/com_menus/controllers/item.php,线~180.

有一个数组定义了可接受的方案:

代码语言:javascript
复制
$scheme = array('http', 'https', 'ftp', 'ftps', 'gopher', 'mailto', 'news', 'prospero', 'telnet', 'rlogin', 'tn3270', 'wais', 'url', 'mid', 'cid', 'nntp', 'tel', 'urn', 'ldap', 'file', 'fax', 'modem', 'git');

当在列表末尾添加skype时,Joomla!允许保存外部链接。javascript也是如此。在任何情况下,您都应该考虑与此解决方案相关的任何安全风险。

此外,您应该记住,在joomla的任何未来更新中,都可能放弃此覆盖。

票数 4
EN

Stack Overflow用户

发布于 2013-12-04 13:20:20

从技术上讲,Joomla认为javascript是一个协议,就像HTTP&Co.一样,它在已知协议列表中查找它,它找不到它,它会抛出一个错误。

开始在[MenusControllerItem::save()][1]内部的环线阅读。基本上,这与你试图使用一些JavaScript无关,,这只是一个副作用。

虽然在外部链接中使用JavaScript并不是一个宣传的特性,而是一个漏洞,但是如果您以前使用过它,它确实会破坏b/c。

你可以:

  1. Joomla问题跟踪器中打开一个问题并报告这个问题,得到一些社区的反馈。解决这个问题真的很容易,它只是需要被接受。
  2. 使用下面的建议
代码语言:javascript
复制
- Instead of link put #
- Set the field "Link CSS Style" to something that does not colide with other classes, eg. `my-function`
- Save
- You can use jQuery to intercept the click event on the link and to make it run your function. See code below:

jQuery(Document).ready(函数($){ // Select基于Joomla后端$(“..my function”).on(单击,函数(E){ //不跟随链接e.preventDefault();//调用函数myFunction(1);});});函数myFunction(x) {警告(“i被称为”+ x);}

Update:在与变更提交人进行简短讨论后,我了解到这可能与安全问题有关。因此,它可能是故意的,毕竟不允许js。

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

https://stackoverflow.com/questions/20313017

复制
相关文章

相似问题

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