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

目前我是这样做的:

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

当前回答

在chrome中,你最好的选择可能是在开发人员工具中的源代码下的snippet选项卡。

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

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

其他回答

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

var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'script.js';
document.head.appendChild(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>");

在现代浏览器中,您可以使用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 */ })

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

eval(await (await fetch('http://example.com/file.js')).text())

安装tampermonkey并添加以下UserScript,带有一个(或多个)@match和特定页面url(或所有页面的匹配:https://*)):

// ==UserScript==
// @name         inject-rx
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Inject rx library on the page
// @author       Me
// @match        https://www.some-website.com/*
// @require      https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.5.4/rxjs.umd.min.js
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
     window.injectedRx = rxjs;
     //Or even:  window.rxjs = rxjs;

})();

当您需要控制台中或代码片段上的库时,请启用特定的UserScript并刷新。

这种解决方案可以防止名称空间污染。您可以使用自定义名称空间来避免意外覆盖页面上现有的全局变量。