如何在 Chrome 控制台中包含 JavaScript 文件或库?

IT技术 javascript google-chrome console include
2021-03-01 22:03:39

是否有更简单的(可能是本机的?)方法来在 Google Chrome 浏览器中包含外部脚本文件?

目前我是这样做的:

document.head.innerHTML += '<script src="http://example.com/file.js"></script>';
6个回答

appendChild() 是一种更原生的方式:

var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'script.js';
document.head.appendChild(script);
为了扩展 Harman 的答案,我将它包裹在一个 JS 函数周围并按如下方式使用它... var _loadScript = function(path){ var script= document.createElement('script'); script.type = '文本/javascript'; 脚本.src=路径;document.head.appendChild(script); } _loadScript(' documentcloud.github.com/underscore/underscore-min.js' ); _loadScript(' backbonejs.org/backbone-min.js' );
2021-04-18 22:03:39
谢谢!我使用 script.innerHTML = javascript_code</code> 来注入直接的 javascript 代码
2021-04-19 22:03:39
Ajay ,谢谢,但你几乎没有语法错误。复制/粘贴下面的文本,在控制台中有下划线。或替换为其他库 var _loadScript = function(path){ var script= document.createElement('script'); script.type = '文本/javascript'; 脚本.src=路径;document.head.appendChild(script); }; _loadScript(' underscorejs.org/underscore-min.js' );
2021-04-29 22:03:39
我有: TypeError: Property 'appendChild' of object #<HTMLHeadElement> is not a function
2021-05-08 22:03:39

你使用一些 AJAX 框架吗?使用 jQuery 将是:

$.getScript('script.js');

如果您没有使用任何框架,请参阅 Harmen 的答案。

(也许仅仅为了做这件简单的事情而使用 jQuery 是不值得的(或者它可能是)但是如果你已经加载了它,那么你也可以使用它。我见过加载了 jQuery 的网站,例如 Bootstrap 但仍然以一种并不总是可移植的方式直接使用 DOM API,而不是为此使用已经加载的 jQuery,而且许多人不知道即使getElementById()在所有浏览器上都不能一致工作的事实- 请参阅此答案以获取详细信息。 )

更新:

我写这个答案已经好几年了,我认为值得在这里指出,今天您可以使用:

动态加载脚本。这些可能与阅读此问题的人有关。

另请参阅:Guy Bedford 在 2014 年的 Fluent 演讲:ES6 module的实用工作流

如果你像这样使用它$.getScript('script.js');$.getScript('../scripts/script.js');那么它是相对于文档的,但它也可以加载绝对网址,例如。$.getScript('https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.6.0/underscore.js');
2021-05-11 22:03:39
它将从哪个文件夹加载脚本?
2021-05-14 22:03:39
如果使用jquery,那么你可以制作一个书签在页面上安装jquery,superuser.com/questions/1460015/...
2021-05-15 22:03:39

在现代浏览器中,您可以使用fetch来下载资源(Mozilla docs),然后 eval 来执行它。

例如,要下载 Angular1,您需要输入:

fetch('https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.min.js')
    .then(response => response.text())
    .then(text => eval(text))
    .then(() => { /* now you can use your library */ })
@Vassilis 我检查了这个,该代码段在 Chrome Canary (64.0.3241.0) 中仍然有效。
2021-04-23 22:03:39
我认为 Vassilis 的问题是因为他使用的应用程序有内容安全策略。Chrome 也适用于我。
2021-04-25 22:03:39
最新的 Chrome 不允许使用eval,并显示以下消息: VM1929:11 Uncaught (in promise) EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "script-src 'self' blob: filesystem: chrome-extension-resource:".
2021-04-27 22:03:39
@Vassilis 使用我的回答(stackoverflow.com/a/57814219/6553339)来避免这个错误
2021-05-14 22:03:39

作为^^^ 以上@maciej-bukowski 回答的后续,在目前(2017 年春季)支持 async/await 的现代浏览器中,您可以按如下方式加载。在这个例子中,我们加载了 load html2canvas 库:

async function loadScript(url) {
  let response = await fetch(url);
  let script = await response.text();
  eval(script);
}

let scriptUrl = 'https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.min.js'
loadScript(scriptUrl);

如果您运行该代码段,然后打开浏览器的控制台,您应该会看到函数 html2canvas() 现在已定义。

安全策略阻止此操作,至少在版本 66 的 Chrome 新标签页上是这样。未捕获(Promise)EvalError:拒绝将字符串评估为 JavaScript,因为“unsafe-eval”在以下内容中不是允许的脚本源内容安全策略指令:“script-src 'strict-dynamic' ...
2021-04-15 22:03:39
@Tatsh 使用我的回答来避免您的错误(stackoverflow.com/a/57814219/6553339
2021-04-28 22:03:39

在 chrome 中,最好的选择可能是开发者工具中 Sources 下的 Snippets 选项卡。

它将允许您编写和运行代码,例如,在 about:blank 页面中。

更多信息:https : //developers.google.com/web/tools/chrome-devtools/debug/snippets/?hl=en

是的,就我个人而言,我认为这是最好的答案,因为它还显示了开发人员以及针对当前页面保存和运行任何 javascript 的简单方法......很好!
2021-05-02 22:03:39
我认为我的前两行是答案的重要部分。他们准确地描述了如何在 Chrome 中访问 Snippets。然后我补充了谷歌文档。
2021-05-05 22:03:39
虽然这在理论上可以回答问题,但最好在此处包含答案的基本部分,并提供链接以供参考。
2021-05-11 22:03:39