2

デスクトップ通知にいくつかのパラメーターを送信したいのですが、それらを取得できません。

そのコードで通知を開きます:

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

nb は私の変数です。

通知.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>

通知.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 1 nouveau message」ではなく「Vous avez」になります。

私のnotification.jsがロードされているかどうかを確認しました。「最初」の値を確認する方法は? そのJSコードをデバッグする方法は? または、URL で GET パラメーターを取得するためのより良い方法はありますか?

どうもありがとう。

よろしく

4

1 に答える 1

4

クエリ文字列は、JSで簡単に解析できるように設定されていません。1つの文字列を渡すだけで済みますか?

その場合は、クエリ文字列の代わりにハッシュを使用します。

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()

于 2012-01-07T19:22:23.063 に答える