如何在 Chrome 应用程序中以编程方式加载 javascript?

How to load javascript programmatically in Chrome App?

我正在构建一个 chrome 应用程序,它将 运行 作为信息亭。我 运行 遇到的问题是 Chrome 应用程序喜欢成为 "one" 页面,因此加载不同的内容并不像链接到另一个页面那么简单。我所做的是用 jQuery .load() 加载我的页面。我现在 运行 正在调查的问题是,这些页面中的每一个都有一些使用 JPlayer 插件的 HTML5 视频。在这些页面上,我有一些可以使视频播放器工作的内联 js。但是,内联 JS 在 Chrome 应用程序中是禁忌(UGH!)。有没有一种方法可以在我单击某些内容时将 javascript 动态加载到我的应用程序中?现在我有这样的东西..

$(".video_list a").click(function(){
    $(".screen").load("video.html", function(){
        $.getScript("video.js");
    });
});

video.js 将包含用于创建视频播放器的 JPlayer 设置。当我 运行 这只是浏览器中的一个常规网页时它可以工作,但是当它是一个 Chrome 应用程序时它不起作用并且我没有收到任何错误,只是一个空的 div 其中视频应该是。

你不能这样做,因为它又是内联代码 - getScript 将脚本加载为文本,然后 eval 就可以了。

要解决此问题,您可以将脚本作为 <script src="..."> 标记插入:

function loadScript(name) {
  var s = document.createElement('script');
  s.src = chrome.runtime.getURL(name);
  s.onload = function() {
    this.parentNode.removeChild(this);
  };
  (document.head||document.documentElement).appendChild(s);
}