我想将一些参数发送到桌面通知,但我无法检索它们。
我用该代码打开通知:
var notification = webkitNotifications.createHTMLNotification(
'../html/notification.html?data='+nb
);
其中nb是我的变量。
notification.html:
<!DOCTYPE html>
<html>
<head>
<title>Notification</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="../js/notification.js"></script>
</head>
<body>
<div id="message">Vous avez <span></span></div>
</body>
</html>
notification.js:
function getUrlVars() {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
var first = getUrlVars()['data'];
$('#message span').html(first +' nouveau message');
例如,结果是“Vous avez”而不是“Vous avez 1 nouveau message”。
我检查了我的notification.js是否已加载。 如何检查“第一”的值?如何调试JS代码? 或者您有更好的方法来检索URL中的GET参数?
非常感谢。
此致
答案 0 :(得分:4)
查询字符串未设置为使用JS轻松解析。你只需要传递一个字符串吗?
如果是这样,请使用Hash而不是Query String:
var notification = webkitNotifications.createHTMLNotification('../html/notification.html#' + nb);
然后在notification.js中:
$('#message span').html(window.location.hash.substr(1) + ' nouveau message');
如果需要传递多个变量,可以使用Stringified JSON对象:
var data = {
var1: "somedata",
var2: 12345
},
notification = webkitNotifications.createHTMLNotification('../html/notification.html#' + JSON.stringify(data));
然后在notification.js中:
var data = JSON.parse(window.location.hash.substr(1));
$('#message span').html('var1 is ' + data.var1 + ' var2 is' + data.var2);
如果您出现解析错误,则可能需要使用encodeURIComponenet()
和decodeURIComponent()