document.documentElement.onkeydown=function(a){a=a||window.event;var b=a.target||a.srcElement;var c=a.keyCode==13&&!a.altKey&&!a.ctrlKey&&!a.metaKey&&!a.shiftKey&&CSS.hasClass...
这是从根文档的头部称为脚本中的。我已经尝试了以下内容来禁用它们:
//contents script:
$().ready( function() {
document.documentElement.onkeydown = '';
});
和均匀
$().ready( function() {
document.documentElement.onkeydown = function(e){};
});
我进一步猜测,这些尝试都没有起作用的原因是因为尽管Chrome扩展内容脚本与他们运行的任何网页共享一个DOM,但也许它们不共享编码环境?任何见解都将不胜感激!
Chrome的内容脚本是在沙盒环境中执行的[源]。没有直接的方法与全局(
默认情况下,将脚本注入为“document_idle”的点。在这一点上,该文件并不忙(DOMContentLoaded
已射击,可能已经开火了,也可能没有开火)。 结果,脚本中的功能可能会在声明后立即覆盖。要注入一个小脚本,我建议将代码直接添加到内容脚本:
window.onload
var actualCode = '/* Code here (see below for inspiration) */';
var script = document.createElement('script');
script.appendChild(document.createTextNode(actualCode));
(document.head || document.documentElement).appendChild(script);
script.parentNode.removeChild(script);
来定义不变的属性:Object.defineProperty
Object.defineProperty(document.documentElement, 'onkeydown', {
value: function() {},
writable: false, /* Cannot be overwritten, default false */
configurable: false, /* Cannot be deleted, or modified */
enumerable: true /* Does not really matter. If true, it's visible in
a for-loop. If false, it's not*/
});
__defineSetter__
您的直觉是正确的,作为Chrome扩展名的一部分,从内容脚本运行的JavaScript是在无法访问包含页面执行的JavaScript的沙盒中运行的。 the content脚本上的chrome doc:
onkeydown
首先,我建议您考虑不同的快捷键。覆盖您自己扩展的现有快捷键的功能,可以为期望Facebook快捷键的人提供刺耳的用户体验。 想象一下,如果扩展名覆盖了CTRL-C和CTRL-P快捷方式,这些快捷方式是桌面操作系统的一部分和粘贴 - 我认为您可能会有一些不适的用户,这些用户可能会删除更改以前所学的行为的事物。
,但是,如果您坚持不懈,那么这里是加载JavaScript的解决方法,该JavaScript将在包含页面的上下文中执行:Edit:
在每个注释中更新以在插件中引用JS文件,而不是网络上托管的文件。首先,您需要在Chrome插件中创建一个JavaScript文件:
document.documentElement.__defineSetter__('onkeydown', function(){});
。
首先,您需要在网络上某个地方托管一个包含要在页面中执行的脚本的JavaScript文件,让我们说您托管它:However, content scripts have some limitations. They cannot:
* Use chrome.* APIs (except for parts of chrome.extension)
* Use variables or functions defined by their extension's pages
* Use variables or functions defined by web pages or by other content scripts
.
override-fb-hotkeys.js
然后,将在包含页面的上下文中获取和执行JavaScript,而不是Chrome插件的沙盒代码。
这就是您可以使用jQuery进行操作的方式 任何网页的所有快捷方式:
http://example.com/override-fb-hotkeys.js
基因人工智能(又称GPT,LLM,生成AI,Genai)工具不可用来生成堆栈溢出的内容。您提供的内容必须是您自己的原始作品,也必须是您对他人正确引用的作品的摘要。如果确定您的内容是由生成人工智能工具撰写的,则可能会删除其以及从中获得的任何声誉。发布由生成人工智能工具产生的内容可能会导致主持人的警告,也可能导致重复违规的暂停。