Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将自定义功能添加到chrome';s控制台_Javascript_Google Chrome_Console_Customization - Fatal编程技术网

Javascript 将自定义功能添加到chrome';s控制台

Javascript 将自定义功能添加到chrome';s控制台,javascript,google-chrome,console,customization,Javascript,Google Chrome,Console,Customization,google chrome中是否可能有自定义功能,这些功能在控制台中始终可用(无论加载了什么页面)?例如,我希望有一个名为echo的函数,它只是console.log的包装器。这只是节省了一点输入,但以后我可能会想创建一些有用的调试功能。这很容易实现。你需要的是创建一个。该脚本将被注入任何页面,并创建一些必要的全局函数,供您在控制台中使用。最具挑战性的部分是如何使这些自定义内容scrtipt函数成为实际窗口对象的一部分,因为通常您无法从内容脚本之外的其他javascript代码访问内容脚本中定义

google chrome中是否可能有自定义功能,这些功能在控制台中始终可用(无论加载了什么页面)?例如,我希望有一个名为echo的函数,它只是console.log的包装器。这只是节省了一点输入,但以后我可能会想创建一些有用的调试功能。

这很容易实现。你需要的是创建一个。该脚本将被注入任何页面,并创建一些必要的全局函数,供您在控制台中使用。最具挑战性的部分是如何使这些自定义内容scrtipt函数成为实际
窗口
对象的一部分,因为通常您无法从内容脚本之外的其他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!其实很简单。我可以呼应(“你好,世界!”);五分钟后:)。