2012-01-07 55 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