如果在浏览器窗口中没有位置,请从右向左放置信息气泡?

时间:2010-09-03 10:24:16

标签: javascript html

有人会有脚本的想法 当它从右到左放置一个信息泡泡 在浏览器窗口中没有位置?谢谢你 你的答案......

我的剧本

// Detection du navigateur
ns4 = (document.layers)? true:false;
ie4 = (document.all)? true:false;

// Decallage de l'infobulle par rapport au pointeur en X et en Y (en pixels)
decal_x = 10;
decal_y = 0;

// Creation d'un raccourci pour manipuler le calque
var skn = (ns4) ? document.bulle : bulle.style;

// Instruction pour Netscape
if (ns4) document.captureEvents(Event.MOUSEMOVE);

// Interception des mouvements du pointeur
// Celui-ci est activé et désactivé par les fonctions
// reactiverMouseMove() et desactiverMouseMove()
//document.onmousemove = suivre_souris;


function popAccueil(nom,adresse,tel,fax,mail) 
{
 var contenu;
 contenu = "<table border='0' cellspacing='0' cellpadding='5' width='200'><tr><td bgcolor='#CCCCFF'>"; 
 contenu += nom + "</td></tr><tr><td bgcolor='#CCCCFF'><u>Adresse</u>: "; 
 contenu += adresse + "</td></tr><tr><td bgcolor='#CCCCFF'><u>Tel</u>: "; 
 contenu += tel + "</td></tr>";
 if (fax != null && fax != '')
 {
 contenu += "<tr><td bgcolor='#CCCCFF'><u>Fax</u>: " +fax + "</td></tr>";
 } 
 if (mail != null && mail != '')
 {
 contenu += "<tr><td bgcolor='#CCCCFF'><u>Mail</u>: " + mail + "</td></tr>";
 }
 contenu +="</table>";
 if (ns4)// Instructions pour Netscape
 {
  skn.document.write(contenu);
  skn.document.close();
  skn.visibility = "visible";
 }// Instructions pour Internet Explorer
 else if (ie4) 
 {
  document.all("bulle").innerHTML = contenu;
  skn.visibility = "visible";
 }
}

function popException(exception) 
{
 var contenu;
 //Si exception n'est pas vide on affiche l'info-bulle
 if(exception!="")
 { 
  contenu = "<table border='0' cellspacing='0' cellpadding='5' width='200'><tr><td bgcolor='#CCCCFF'>" + exception + "</td></tr></table>";
  if (ns4)// Instructions pour Netscape
  {
   skn.document.write(contenu);
   skn.document.close();
   skn.visibility = "visible";
  }// Instructions pour Internet Explorer
  else if (ie4) 
  {
   document.all("bulle").innerHTML = contenu;
   skn.visibility = "visible";
  } 
 }
}
function pop(message, image) {

// Formatage de l'infobulle (ici un tableau bleu)
 var contenu;
 if(image == "/stockage/")
 {
  contenu = "<table border='0' cellspacing='0' cellpadding='5' width='200'><tr><td bgcolor='#CCCCFF'>" + message + "</td></tr></table>";
 }
 else
 {
   contenu = "<table border='0' cellspacing='0' cellpadding='5' width='200'><tr><td bgcolor='#CCCCFF'>" + message + "</td></tr><tr><td><img src="+ image +" border='0'></td></tr></table>";
 }
// Instructions pour Netscape
 if (ns4) {
  skn.document.write(contenu);
  skn.document.close();
  skn.visibility = "visible";
  }

// Instructions pour Internet Explorer
 else if (ie4) {
  document.all("bulle").innerHTML = contenu;
  skn.visibility = "visible";
  }
 }

// Gestion du pointeur
function suivre_souris(e) {

// Creation des variables de decallage
 var x = (ns4) ? e.pageX : event.x + document.body.scrollLeft;
 var y = (ns4) ? e.pageY : event.y + document.body.scrollTop;
// Cas particulier pour Internet Explorer sur Mac (les coordonnees de decallages sont modifiees)
 if ( (navigator.userAgent.indexOf('Mac') != -1) && (navigator.userAgent.indexOf('MSIE') != -1) ) {
  skn.left = x + decal_x - 135;
  skn.top  = y + decal_y - 155;
  }

// Pour les autres cas, decallage normal du calque par rapport au pointeur
 else {
  skn.left = x + decal_x;
  skn.top  = y + decal_y;
  }
 }


// Fonction pour masquer le calque
function disparaitre() {
 if (ns4) {
  skn.document.write('');
  skn.document.close();
  skn.visibility = "hidden";
  }
 else if (ie4) {
  document.all("bulle").innerHTML = '';
  skn.visibility = "hidden";
  }
 }


// Désactive la gestion du suivi de souris
function desactiverMouseMove(){
 document.onmousemove = null;
}

// Réactive la gestion du suivi de souris
function reactiverMouseMove(){
 document.onmousemove = suivre_souris;
}

alt text

我希望当我有这个泡泡时 当它从右到左放置 当浏览器窗口显示在窗口外

时,它在浏览器窗口中没有位置

1 个答案:

答案 0 :(得分:0)

您可以获取窗口客户端的宽度和高度,然后将其与您的气泡位置进行比较 如果添加到气泡宽度的气泡X位置大于客户端的大小,则新的X位置应该等于客户端宽度和气泡宽度之间的差值。在IE中你可以使用document.body.clientWidth获取客户端的宽度,在其他浏览器中你应该使用window.innerWidth。
这是一个简单的例子:

var bx, by; // bx and by stand for the bubble's X and Y position
var bw, bh; // bw is the bubble's width and bh is the height
// ... some code here ...
// ... the bx and by variables get the mouse coordinates ...
if (bx+bw>window.innerWidth) bx=window.innerWidth-bw;
if (by+bh>window.innerHeight) by=window.innerHeight-bh;

我希望我已经解释得很好。如果你不理解某些事情,请告诉我它,我会尝试更好地解释它。