【发布时间】:2016-11-06 17:06:09
【问题描述】:
在页面加载时,我请求用户允许这样的通知:
document.addEventListener('DOMContentLoaded', function () {
if (Notification.permission !== "granted")
Notification.requestPermission();
});
然后我编写了一个向用户发送通知的函数,效果很好:
function push(title, message, location) {
if(!Notification) { return; }
if (Notification.permission !== "granted") { return; }
var notification = new Notification(title, {
icon: 'http://cdn.sstatic.net/stackexchange/img/logos/so/so-icon.png',
body: message,
});
notification.onclick = function () {
window.open(location);
};
}
这样使用:
push('Test', 'Test Message', 'http://example.com');
然后我有一个 PHP 脚本,暂时它是静态的,并返回相同的东西以供很快进行数据库驱动的测试。
session_start();
header('Content-Type: application/javascript');
if(!isset($_SESSION['notify'])) {
echo json_encode(array(
'Title' => 'Welcome to our Site',
'Message' => 'You are current recieving notifications.',
'Location' => 'http://example.com/',
'State' => true
),true);
$_SESSION['notify'] = true;
} else {
echo json_encode(array(
'State' => false
), true);
}
直接访问页面时也可以正常工作。该问题出现在我的 AJAX 请求中:
setInterval(function() {
$(document).ready(function() {
$.post('../notify/get_notify.php').done(function(response) {
if(response.State) {
push(response.Title, response.Message, response.Location);
}
console.log(response);
});
});
}, 5000);
问题来了!当我检查网络时,每 5 秒就会发出一个请求并且响应会返回。但是,控制台中没有记录任何内容,也没有执行 push() 方法。
任何帮助将不胜感激。
【问题讨论】:
标签: javascript php jquery google-chrome