尝试通过自定义扩展程序从Google Chrome上下文菜单启动JNLP

时间:2013-12-16 12:51:42

标签: javascript json google-chrome-extension jnlp

我有一个swing应用程序,我正在重新使用WebStart [可启动]配置。我的JNLP几乎就在那里,但令我困惑的是下一步:链接到Chrome上下文菜单。

该应用程序是一个JSON查看器/操纵器,它目前将URL提取到JSON文件,将其拉入JFrame并解析JSON树,允许您导航它。如前所述,您目前必须提供检索和格式化的URL。

我真正喜欢能够做的是导航到Chrome中的json文件,然后右键单击“JSON Viewer中的视图”。对于示例Proof Of Concept,[获取要加载的jnlp文件]我正在使用他们提供的Oracle'notepad'jnlp作为示例。

我已经创建了我的基本manifest.json文件和javascript条目,然后尝试了一些“deployJava.js”文件

清单文件:

{
  "name": "JSON Viewer",
  "version": "1.0",
  "manifest_version": 2,
  "description": "Launch JSON viewer.",
  "browser_action": {
    "default_icon": "icon.png"
  },
  "permissions": [ "contextMenus" ],
  "background": {
    "scripts": ["jsonview.js"]
  }
}

Javascript文件:

var title = "Edit JSON";
var id = chrome.contextMenus.create({"title": title, "contexts": ["page"],
    "onclick": loadJsonViewer });
console.log("'" + context + "' item:" + id);

function loadJsonViewer(info, tab) {
  //info is OnLoadData
  alert(info.pageUrl);
  var url = "http://java.sun.com/javase/technologies/desktop/javawebstart/apps/notepad.jnlp";
  launchWebStartApplication(url);
}

// launch the specified JNLP application using the passed in jnlp file
// the jnlp file does not need to have a codebase
// this requires JRE 7 or above to work
// if machine has no JRE 7 or above, we will try to auto-install and then launch
/ (function will return false if JRE auto-install failed)
function launchWebStartApplication (jnlp) {
  var jnlpDocbase = null;

  // use document.documentURI for docbase
  if (document.documentURI) {
    jnlpDocbase = document.documentURI;
  }

  // fallback to document.URL if documentURI not available
  if (jnlpDocbase == null) {
    jnlpDocbase = document.URL;
  }

  document.location = jnlp;
  return true;
}

到目前为止,我的尝试一直很失败:(

我的思维模式是,我试图拉出启动JNLP的实际线路,因为我没有嵌入或创建任何“嵌入式”启动按钮(通常是这样),但我还是公平的离开。

我在这条路线上的主要问题是:这甚至可以工作吗?如果是这样的话,那么“绕过”嵌入式标签的最佳方式就是为了调出并创建一个小程序,这似乎是需要的。

1 个答案:

答案 0 :(得分:1)

您尝试访问的网址似乎已被删除 根据 this tutorial page ,Oracle的演示'记事本'的JNLP版本的新网址申请是http://docs.oracle.com/javase/tutorialJWS/deployment/webstart/examples/Notepad.jnlp

Additonaly,您正在尝试更改自动生成的后台页面的位置,该页面注定要失败(因为它不可能)。

请改为尝试:

var title = "Edit JSON";
var url = 'http://docs.oracle.com/javase/tutorialJWS/deployment/webstart/examples/Notepad.jnlp';
var id = chrome.contextMenus.create({
    title: title,
    contexts: ["page"],
    onclick: function(info, tab) {
        window.open(url);
    }
});