如果按下"F2",我希望打开一个新窗口。以下代码在Firefox中会给我返回"newWindow is null"错误信息。如果我不使用弹出窗口拦截器,它就能正常工作。IE也是如此。即使启用了弹出窗口拦截器,它在Chrome中也能正常工作。
使用jstree pre 1.0 stable。
我的理解是上面页面的脚本以某种方式操纵用户点击链接时发生的事情。它改变了点击的属性,使浏览器“不知道”它是新窗口,因此可以绕过弹出窗口拦截器。
在我的情况下,我使用纯JS函数由其他东西触发,而不是用户点击。而且“我的函数”不会改变任何HTML对象的属性。我认为这就是区别所在。我不确定我是否正确。
使用jstree pre 1.0 stable。
hotkeys: {
"f3" : function () {
url = "http://www.vse.cz";
var newWindow = window.open(url, '_blank');
newWindow.focus();
return false;
},
问题1: 我能否使热键插件在所有浏览器上都能正常工作,这样用户就不需要更改设置了?
问题2: 为什么使用JavaScript而不是target打开新窗口在火狐浏览器中没有任何问题?这是因为它是一个链接而不是使用热键插件吗?
我的理解是上面页面的脚本以某种方式操纵用户点击链接时发生的事情。它改变了点击的属性,使浏览器“不知道”它是新窗口,因此可以绕过弹出窗口拦截器。
在我的情况下,我使用纯JS函数由其他东西触发,而不是用户点击。而且“我的函数”不会改变任何HTML对象的属性。我认为这就是区别所在。我不确定我是否正确。
contextmenu
http://www.jstree.com/documentation/contextmenu 在哪里调用/因为鼠标点击而被触发的函数呢?我使用热键插件时遇到了相同的行为。 - Radekcontextmenu
事件虽然在逻辑上是鼠标单击事件,但它不在允许的事件列表中,所以行不通。 (还要考虑到contextmenu
不一定是由鼠标单击触发的--用户可能会按下上下文菜单键或Shift+F10。)此外,您无法使用click
处理程序捕获右键单击(请注意,如果您左键或中键单击,则数字会更改,但如果您右键单击,则不会更改)。 - josh3736contextmenu
通常是由右键单击触发的;click
是由左键或中键单击触发的。您可以从click
事件打开弹出窗口,但无法从contextmenu
事件打开。 - josh3736contextmenu
DOM事件只在右键单击时触发。如果您要使用jQuery的事件处理程序触发机制($(element).trigger('contextmenu')
),则需要意识到您实际上正在调用附加到事件的每个函数,但是您并没有导致本机DOM事件被触发。弹出规则基于调用触发jQuery事件处理程序的函数的本机DOM事件。规则不基于触发的jQuery事件应用。 - josh3736