首页 > 解决方案 > 通过 Javascript 向浏览器添加和加载 Javascript 而无需重新加载

问题描述

我在 Eclipse RAP 应用程序中有一个 SWT 浏览器,我在本地服务器上加载一些内容并显示该 html。

网址看起来像这样:“ http://localhost:port/......./myhtml.html

我想在不重新加载页面的情况下将脚本源添加到我的 html 中。目前我正在使用我在浏览器中执行的 Javascript 来执行此操作。

var script = document.createElement('script');
script.setAttribute('src', 'SOMESOURCE');
document.head.appendChild(script);

这确实有效,我最终将脚本标签正确添加到 HTML DOM,但是它不加载引用,因此我无法访问这些脚本引用中定义的任何内容。但是调用类似的东西

window.top.location.reload(false)

也不起作用,因为这会重新加载 HTML 并因此删除我最初添加的脚本标签。

这里的主要问题是,由于我们在这里使用的技术,我受到了很大的限制,所以我只能在我的浏览器中执行 javascript 查询。

PS:为了进行测试,您只需打开任何浏览器,如 Chrome 和 Firefox,打开其开发者工具包并将该脚本输入控制台即可。网站无所谓。

标签: javascripteclipse-rap

解决方案


感谢@JensV 帮助我。

问题是虽然我添加了我的脚本,但它没有加载它的内容。所以我是问题中描述的。

但是正如@JensV 在错误中提到的那样

异步加载脚本

它被描述为使用一个 Promise 对象来处理加载和错误事件。

function loadScript(src) {
    return new Promise(function (resolve, reject) {
        var s;
        s = document.createElement('script');
        s.src = src;
        s.onload = resolve;
        s.onerror = reject;
        document.head.appendChild(s);
    });
}

所以我所做的是首先执行该 Javascript 并添加此函数,然后使用所需的源执行它。

再次感谢@JensV,您可能想将此标记为重复,但我认为我的问题与那个有点不同。


推荐阅读