我正在研究 bookmarklet这将使用户可以用我们的语言在任何输入字段上书写。我们选择 Ctrl+M
在默认布局和我们的语言之间切换布局(受维基百科启发)。它在几乎所有使用 chrome 的网站上都运行良好。当我们开始检查 Firefox 时,我们发现它只在 Facebook 中失败。
Moreover, Facebook catches the
Ctrl+M
from outside thewindow
scope. Like, form the address bar, search bar, firebug console, etc.
我尝试过使用原始 javascript、jQuery 以及 jQuery Hotkeys插件 John Resig但没有运气:(
这是我试过的版本。您可以在 Firebug 控制台上运行它以进行测试 -
(function(){
var noConflictMode = false;
if(typeof $ !== 'undefined') noConflictMode = true;
if(typeof jQuery === 'undefined') {
var root = (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]);
var ns = document.createElementNS && document.documentElement.namespaceURI;
var script = ns ? document.createElementNS(ns, 'script') : document.createElement('script');
script.type = 'text/javascript';
script.onreadystatechange = function () {
if (this.readyState == 'complete') test();
}
script.onload= test;
script.src= 'https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.min.js';
root.appendChild(script);
} else {
test();
}
function test() {
if(noConflictMode) jQuery.noConflict();
jQuery(window).on('keydown keyup keypress', function(e){
e.preventDefault();
// For Firefox
e.stopPropagation();
// Extra effort :|
e.stopImmediatePropagation()
e.cancelBubble = true;
console.log(e);
return false;
});
}
})();
最佳答案
出于安全原因,您不能在客户端 Web 上执行此操作,您可以使用 JS 或 JQ 或任何您想要的语言编写任何代码,但 MOZ 永远不会处理您的代码。
注意,一件事是浏览器“编译”您的代码并使用它,另一件事是您可以更改浏览器本身。出于这个原因,有“附加组件”。 例如,你不能在 V.S. 中更改 Visual Studio 编程的内核。 :D
但是...
...您可以要求用户重新绑定(bind) key ,您有 3 种方法可以做到这一点:
1) 安装 MOZ 插件(或您自己的插件)
2) 使用:http://mxr.mozilla.org/seamonkey/source/dom/public/idl/events/nsIDOMKeyEvent.idl
3) 在操作系统级别安装快捷键b,其优先级高于应用程序(在本例中为MOZ)(您可以使用C# 完成)。 Alt+tab 组合是高级快捷方式或“Prnt Scrn”的示例
about:config 无法做到这一点,也没有。
也许这个 url 可以帮助你,但我建议你尝试在 MOZ 中请求更改而不是请求 Javascript 代码。
关于javascript - 在 Firefox 中覆盖 Facebook 的 Ctrl+M 热键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8220605/