是否可以在google-chrome中使用自定义功能,这些功能将始终在控制台中可用(无论加载哪个页面)?例如,我想有一个名为echo的函数,它只是console.log的一个包装器。这只是节省了一些输入,但后来我可能想要创建一些有用的调试功能。
答案 0 :(得分:19)
嗯,这很容易实现。您需要的是创建content script。此脚本将在任何页面中注入,并创建一些您将在控制台中使用的必要全局函数。最具挑战性的部分是如何使这些自定义内容scrtipt函数成为实际window
对象的一部分,因为通常您无法从其余的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);
因此,您将新功能指定为全局功能,以便在console
中使用它们
另请查看此post
答案 1 :(得分:0)
今天,也许另一种方法是使用Chrome Snippets。它们使您可以存储可以重复使用多次的自定义代码。