我正在开发Visual Studio 2012和Win8.1中的JavaScript Metro应用程序
我在任何webBrowser上使用URI调用我的应用程序,如:
myapp:///
但我想发送几个这样的参数
myapp://parameters/?p1="hello"&p2="Jesus"
并恢复我的应用程序内的值有几个目的,是否可能?该怎么做??
提前致谢
修改
这是我到目前为止所获得的代码,但仍无效:
app.onactivated = function (args) {
if (args.detail.kind === activation.ActivationKind.launch) {
...
}
//Handles URI activation (by Protocol)
else if (args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.protocol) {
// Displays on screen the URI parameters
console.log("the parameters: " + args.detail.uri.queryParsed);
args.setPromise(WinJS.UI.processAll());
}
};
它说(翻译自西班牙语):
此表达式的值可能不正确。无法评估 因为'预期标识符'单击此按钮以尝试评估 现在
这是完整的错误
“TypeError:GetAt:无效参数\ n在onactivated (MS-APPX://7f50cf46-2f92-4088-b44e-2da6ccd24a08/js/default.js:68:13)\ n 在包装器(ms-appx://microsoft.winjs.1.0/js/base.js:549:61)\ n at dispatchOne(ms-appx://microsoft.winjs.1.0/js/base.js:6987:25)\ n at dispatchEvent(ms-appx://microsoft.winjs.1.0/js/base.js:6986:21)\ n
在drainQueue(ms-appx://microsoft.winjs.1.0/js/base.js:7038:9)\ n at queueEvent(ms-appx://microsoft.winjs.1.0/js/base.js:7057:13)\ n at 匿名功能 (ms-appx://microsoft.winjs.1.0/js/base.js:7110:13)\ n at CompletePromise_then (ms-appx://microsoft.winjs.1.0/js/base.js:1790:21)\ n at activatedHandler(ms-appx://microsoft.winjs.1.0/js/base.js:7109:9)“
EDIT2:这就是我迄今为止得到的最接近我的答案URI
app.onactivated = function (args) {
if (args.detail.kind === activation.ActivationKind.launch) {
...
// Handles URI activation
WinJS.Application.addEventListener("activated", onActivatedHandler, false);
args.setPromise(WinJS.UI.processAll());
}
};
function onActivatedHandler(eventArgs) {
if (eventArgs.detail.kind == Windows.ApplicationModel.Activation.ActivationKind.protocol) {
var uri = String(eventArgs.detail.uri.rawUri);
var par1 = uri.substring(uri.indexOf("?p1=") + 7, uri.indexOf("&p2=") -3);
var par2 = uri.substring(uri.indexOf("&p2=") + 7, uri.length - 3);
Windows.UI.Popups.MessageDialog("parameter1: " + par1 + ", and the parameter2: " + par2).showAsync();
}
}
这显示了一个弹出窗口:
title
parameter1: hello, and the parameter2: Jesus
我希望得到一个参数数组或字典......
答案 0 :(得分:1)
是的,这是可能的。首先检查您的应用是否已通过协议激活
(eventArgs.detail.kind == Windows.ApplicationModel.Activation.ActivationKind.protocolol
假设eventArgs是激活事件args)然后您可以通过以下方式访问已解析的查询字符串对象:
eventArgs.detail.uri.queryParsed
希望有所帮助。