У меня сайт интегрирован с форумом phpBB3 и на сайте я сделал оповещение о новых ЛС на форуме таким образом:
Код: Выделить всё
$user_go=$user->data['user_id'];
$col_ls = 'null';
$k_l_s = mysql_query("SELECT * FROM `phpbb_privmsgs_to` where `user_id`='".$user->data['user_id']."' and `pm_new`='1'");
$col_ls = MYSQL_NUMROWS($k_l_s);
if ($col_ls){
$title = "Новое сообщение";
}else{
$title = "Site.Ru";
}
echo "<TITLE>".$title."</TITLE>";
?>
<script language=JavaScript type="text/javascript">
function openBrWindow(theURL,winName,features){
window.open(theURL,winName,features);
}
// файл обработки запроса...
var url = "http://<?echo $_SERVER['HTTP_HOST'];?>/system/request.php?id=<? echo $user_go; ?>";
// сохраняем установленый уже титл
var oldTitle = document.title;
// определяем текст, который будет выводиться в титле
var newTitle = 'Вам сообщение';
// идентификатор установки интервала для мигания титла
var intervalID = null;
// для включения моргания титла
var count = 0;
showTitle();
// включим интервал проверки.
// вместо 5 сек (5000) нужно установить минуту (60000) или больше
setInterval('showTitle()', 45000);
// функция запроса данных с сервера
function getXMLDocumentTitle() {
var xml2;
if(window.XMLHttpRequest) {
xml2=new XMLHttpRequest();
xml2.open("GET", url, false);
xml2.send("");
// если надо получать именно XML, то включается это:
//return xml2.responseXML;
// иначе будет только текст
return xml2.responseText;
} else if(window.ActiveXObject) {
xml2=new ActiveXObject("Microsoft.XMLDOM");
xml2.async=false;
xml2.load(url);
return xml2;
} else {
alert("Загрузка XML не поддерживается браузером");
return null;
}
}
// функция, срабатываемая на основном интервале
function showTitle() {
// запросим сервер
var newDataTitle=getXMLDocumentTitle();
//alert(newDataTitle);
// проверим - если равна null
if(newDataTitle== 0 ) {
// мигание выключаем
clearInterval(intervalID);
// возвращаем старый титл
document.title=oldTitle;
document.getElementById("new_msg").innerHTML = '';
} else {
// иначе обрабатываем заголовок
document.title=newTitle;
// и включаем мигание c интервалом 1 сек (1000)
intervalID=setInterval('changTitle()', 800);
document.getElementById("new_msg").innerHTML = '<b><? echo $user->data['username']; ?>, Вам сообщение на форуме</b><a href="javascript:;" onClick="openBrWindow(\'http://<?echo $_SERVER['HTTP_HOST'];?>/forum/ucp.php?i=pm&folder=inbox\',\'scrollbars=yes,resizable=yes,width=800,height=600\');return false;"><img src="http://<?echo $_SERVER['HTTP_HOST'];?>/images/message_new.png" width="48px;" title="Нажмите на ссылку,чтобы перейти в папку входящих сообщений" alt=""></a>';
}
}
// функция для мигания титла
function changTitle() {
if(count==0) {
count=1;
document.title="***************";
} else {
count=0;
document.title=newTitle;
}
}
</script>
