我有一个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的实际线路,因为我没有嵌入或创建任何“嵌入式”启动按钮(通常是这样),但我还是公平的离开。
我在这条路线上的主要问题是:这甚至可以工作吗?如果是这样的话,那么“绕过”嵌入式标签的最佳方式就是为了调出并创建一个小程序,这似乎是需要的。
答案 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);
}
});