2012-01-07 68 views
2

我想发送一些参数给我的桌面通知,但我无法检索它们。铬扩展桌面通知发送获取参数

我打开一个通知,该代码:

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个风格信息”,例如。

我检查了我的notification.js是否已加载。 如何检查“第一个”的值?如何调试该JS代码? 或者你有更好的方法来检索URL中的GET参数吗?

非常感谢。

Regards

回答

4

查询字符串未设置为使用JS轻松解析。你只需要传递一个字符串?

如果是这样,使用哈希代替查询字符串:

var notification = webkitNotifications.createHTMLNotification('../html/notification.html#' + nb); 

然后在notification.js:

$('#message span').html(window.location.hash.substr(1) + ' nouveau message'); 

如果您需要传递多个变量,你可以使用字符串化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()

+0

它的工作原理与第二种方式,我忘了换我的代码与jQuery的。就绪() – Syl 2012-01-07 20:22:53

+0

啊notification.js,即会这样做。很高兴你明白了。 – 2012-01-07 20:42:55