icon Get the most out of Surmunity, read our tips here! Need an interesting blog to read? You've got to read the Surpass Blog! | Welcome! Please register to access all of our features.
Old February 8th, 2008, 7:20 PM   #1 (permalink)
Registered User
Fresh Surpasser
 
Joined in Feb 2008
3 posts
Gave thanks: 0
Thanked 0 times
Javascript context menu (very hard)

I have this code where you right click on a table and it displays a small menu, but when i click view profile in internet explorer it points to the url viewprofile.php?username=then the table i clickedname in firefox it dosnt seem to link with the table name. Also when i right click on a table it displays the table name at the top of the menu it works in both ie and firefox. Can anyone help me my code is:

contextmenu.php:
Code:
<head>
<style>
<!--

.skin0{
position:absolute;
width:100px;
border:2px solid black;
background-color:menu;
font-family:arial;
line-height:20px;
cursor:default;
font-size:10px;
z-index:100;
visibility:hidden;
}

.menuitems{
padding-left:10px;
padding-right:10px;
}
-->
</style>
</head>

<body>
<div id="ie5menu" class="skin0" onMouseover="highlightie5(event)" onMouseout="lowlightie5(event)" onClick="jumptoie5(event)">
	<div align="center" id="ie5menu_Username"></div><hr>
	<div class="menuitems" id="ie5menu_privatechat" url="prvchat.php?username=" target="function">Private chat</div>
	<div class="menuitems" id="ie5menu_ignoreuser" url="ignoreuser.php?username=" target="function">Ignore user</div>
	<div class="menuitems" id="ie5menu_sendchatmail" url="sendchatmail.php?username=" target="function">Send chatmail</div>
	<div class="menuitems" id="ie5menu_viewprofile" url="viewprofileshow.php?username=" target="htmlframe">View profile</div>
	<div class="menuitems" id="ie5menu_kickuser" url="kickuser.php?username=" target="function">Kick user</div>
</div>

<script language="JavaScript1.2">
//set this variable to 1 if you wish the URLs of the highlighted menu to be displayed in the status bar
var display_url = 0;
var ie5=document.all&&document.getElementById;
var ns6=document.getElementById&&!document.all;
if (ie5||ns6)
	var menuobj=document.getElementById("ie5menu");
function showmenuie5(e){
	var firingobj=ie5? event.srcElement : e.target;
	//Find out how close the mouse is to the corner of the window
	var rightedge=ie5? document.body.clientWidth-event.clientX : window.innerWidth-e.clientX;
	var bottomedge=ie5? document.body.clientHeight-event.clientY : window.innerHeight-e.clientY;
	//if the horizontal distance isn't enough to accomodate the width of the context menu
	if (rightedge<menuobj.offsetWidth)
		//move the horizontal position of the menu to the left by it's width
		menuobj.style.left=ie5? document.body.scrollLeft+event.clientX-menuobj.offsetWidth : window.pageXOffset+e.clientX-menuobj.offsetWidth;
	else
		//position the horizontal position of the menu where the mouse was clicked
		menuobj.style.left=ie5? document.body.scrollLeft+event.clientX : window.pageXOffset+e.clientX;
	//same concept with the vertical position
	if (bottomedge<menuobj.offsetHeight)
		menuobj.style.top=ie5? document.body.scrollTop+event.clientY-menuobj.offsetHeight : window.pageYOffset+e.clientY-menuobj.offsetHeight;
	else
		menuobj.style.top=ie5? document.body.scrollTop+event.clientY : window.pageYOffset+e.clientY;
	//assign the values to the menu DIV
	var username = firingobj.id;
	document.getElementById('ie5menu_Username').innerHTML = username;
	document.getElementById('ie5menu_ignoreuser').url = "ignoreuser.php?username=" + username;
	document.getElementById('ie5menu_privatechat').url= "prvchat.php?username=" + username;
	document.getElementById('ie5menu_viewprofile').url= "viewprofileshow.php?username=" + username;
	document.getElementById('ie5menu_kickuser').url= "kickuser.php?username=" + username;
	menuobj.style.visibility="visible";
	return false
}

function hidemenuie5(e){
	menuobj.style.visibility="hidden"
}

function highlightie5(e){
	var firingobj=ie5? event.srcElement : e.target
	if (firingobj.className=="menuitems"||ns6&&firingobj.parentNode.className=="menuitems"){
		if (ns6&&firingobj.parentNode.className=="menuitems") firingobj=firingobj.parentNode //up one node
		firingobj.style.backgroundColor="highlight"
		firingobj.style.color="white"
		if (display_url==1)
			window.status=event.srcElement.url
	}
}

function lowlightie5(e){
	var firingobj=ie5? event.srcElement : e.target
	if (firingobj.className=="menuitems"||ns6&&firingobj.parentNode.className=="menuitems"){
		if (ns6&&firingobj.parentNode.className=="menuitems") firingobj=firingobj.parentNode //up one node
		firingobj.style.backgroundColor=""
		firingobj.style.color="black"
		window.status=''
	}
}

function jumptoie5(e){
	var firingobj=ie5? event.srcElement : e.target
	if (firingobj.className=="menuitems"||ns6&&firingobj.parentNode.className=="menuitems"){
		if (ns6&&firingobj.parentNode.className=="menuitems") firingobj=firingobj.parentNode
		if (firingobj.getAttribute("target"))
			window.open(firingobj.getAttribute("url"),firingobj.getAttribute("target"))
		else
			window.location=firingobj.getAttribute("url")
	}
}

if (ie5||ns6){
	menuobj.style.display=''
	document.onclick=hidemenuie5
}
</script>
</body>
chatboxframe.php
Code:
<td align="center" id="<?= $onlineusersqry[username]; ?>" oncontextmenu="return showmenuie5(event)"><?= $test ?></td></div>
demo at http://220.245.192.227 click the link then type a username in guest login and selet an avatar then test it from there cheers
Mike4x4 is offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On