有没有一个更简单的(本机也许?)方法,包括一个外部脚本文件在谷歌Chrome浏览器?

目前我是这样做的:

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

当前回答

我用这个在控制台加载ko knockout对象

document.write("<script src='https://cdnjs.cloudflare.com/ajax/libs/knockout/3.5.0/knockout-3.5.0.debug.js'></script>");

或本地托管

document.write("<script src='http://localhost/js/knockout-3.5.0.debug.js'></script>");

其他回答

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

var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'script.js';
document.head.appendChild(script);

你是否使用AJAX框架?使用jQuery它将是:

$.getScript('script.js');

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

(也许用jQuery来做这个简单的事情是不值得的(也许是值得的),但如果你已经加载了它,那么你不妨使用它。我见过一些网站加载了jQuery,例如Bootstrap,但仍然直接使用DOM API,这种方式并不总是可移植的,而不是使用已经加载的jQuery,许多人都没有意识到getElementById()在所有浏览器上都不能一致工作的事实-详情请参阅这个答案。)

更新:

我写这个答案已经有很多年了,我认为值得在这里指出的是,今天你可以使用:

SystemJS ModuleLoader jspm.io

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

参见Guy Bedford的Fluent 2014演讲:ES6模块的实际工作流程。

如果你刚开始学习javascript,不想花时间创建一个完整的网页,只是为了嵌入测试脚本,只需在Chrome浏览器的新选项卡中打开开发工具,然后单击控制台。

然后输入一些测试脚本:例如。

console.log('Aha!') 

然后在每一行后按Enter(由Chrome提交执行)

或者加载你自己的“外部脚本文件”:

document.createElement('script').src = 'http://example.com/file.js';

然后调用你的函数:

console.log(file.function('驨ꍬ啯ꍲᕤ'))

测试在谷歌Chrome 85.0.4183.121

你可以获取脚本作为文本,然后求值:

eval(await (await fetch('http://example.com/file.js')).text())
var el = document.createElement("script"),
loaded = false;
el.onload = el.onreadystatechange = function () {
  if ((el.readyState && el.readyState !== "complete" && el.readyState !== "loaded") || loaded) {
    return false;
  }
  el.onload = el.onreadystatechange = null;
  loaded = true;
  // done!
};
el.async = true;
el.src = path;
var hhead = document.getElementsByTagName('head')[0];
hhead.insertBefore(el, hhead.firstChild);