Javascript 将自定义功能添加到chrome';s控制台
google chrome中是否可能有自定义功能,这些功能在控制台中始终可用(无论加载了什么页面)?例如,我希望有一个名为echo的函数,它只是console.log的包装器。这只是节省了一点输入,但以后我可能会想创建一些有用的调试功能。这很容易实现。你需要的是创建一个。该脚本将被注入任何页面,并创建一些必要的全局函数,供您在控制台中使用。最具挑战性的部分是如何使这些自定义内容scrtipt函数成为实际Javascript 将自定义功能添加到chrome';s控制台,javascript,google-chrome,console,customization,Javascript,Google Chrome,Console,Customization,google chrome中是否可能有自定义功能,这些功能在控制台中始终可用(无论加载了什么页面)?例如,我希望有一个名为echo的函数,它只是console.log的包装器。这只是节省了一点输入,但以后我可能会想创建一些有用的调试功能。这很容易实现。你需要的是创建一个。该脚本将被注入任何页面,并创建一些必要的全局函数,供您在控制台中使用。最具挑战性的部分是如何使这些自定义内容scrtipt函数成为实际窗口对象的一部分,因为通常您无法从内容脚本之外的其他javascript代码访问内容脚本中定义
窗口
对象的一部分,因为通常您无法从内容脚本之外的其他javascript代码访问内容脚本中定义的函数或变量。内容脚本在所谓的隔离环境中运行
内容脚本在称为隔离世界的特殊环境中执行。它们可以访问所注入页面的DOM,但不能访问页面创建的任何JavaScript变量或函数。对于每个内容脚本,它看起来就像在其运行的页面上没有其他JavaScript执行一样。反过来也是如此:页面上运行的JavaScript不能调用任何函数或访问内容脚本定义的任何变量
但是有一些奇特的解决方法。您可以按如下方式定义清单文件: manifest.json
{
"name": "Content script",
"version": "0.1",
"manifest_version": 2,
"content_scripts": [{
"matches": ["http://*/*"],
"js": ["console.js"]
}]
}
以及您的内容脚本:
console.js
function customConsole() {
window.myNewFunction = function() {
console.log("Hello I'm available from console.");
};
}
var script = document.createElement('script'),
code = document.createTextNode('(' + customConsole + ')();');
script.appendChild(code);
(document.body || document.head || document.documentElement).appendChild(script);
因此,您可以将新函数指定为全局函数,以便在控制台中使用它们
今天再看一看这个,也许另一种方法是使用。它们允许您存储可重复使用多次的自定义代码。也许您可以创建一个插件。控制台相对于当前页面工作,所以它应该是可行的。感谢您指向插件方向。让我们看看我是否“足够懒”去为包装纸做一个……你和chrome rock!其实很简单。我可以呼应(“你好,世界!”);五分钟后:)。