/    Sign up×
Community /Pin to ProfileBookmark

greybox + menu calling javascript from javscript

Hi,

Im trying to call orangoos greybox from a dynamic drive menu from the code below :

[CODE]inkset[0]=”<a onlick=’return GB_showCenter(‘Test’, ‘http://www.google.com’>Dynamic Drive</a>”[/CODE]

But it won’t call it?
I have the relevant greybox code in there because it works in regular link – I would just like to be able to call it from the menu.

I feel like I’m missing something really obvious but have just got hung up on this one problem for a bit.

[CODE]
<style type=”text/css”>

#popitmenu{
position: absolute;
background-color: white;
border:1px solid black;
font: normal 12px Verdana;
line-height: 18px;
z-index: 100;
visibility: hidden;
}

#popitmenu a{
text-decoration: none;
padding-left: 6px;
color: black;
display: block;
}

#popitmenu a:hover{ /*hover background color*/
background-color: #CCFF9D;
}

</style>

<script type=”text/javascript”>

/***********************************************
* Pop-it menu- © Dynamic Drive (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/

var defaultMenuWidth=”150px” //set default menu width.

var linkset=new Array()
//SPECIFY MENU SETS AND THEIR LINKS. FOLLOW SYNTAX LAID OUT

linkset[0]=”<a onlick=’return GB_showCenter(‘Test’, ‘http://www.google.com’>Dynamic Drive</a>”
linkset[0]+='<hr>’ //Optional Separator

linkset[1]='<a href=”http://msnbc.com”>MSNBC</a>’
linkset[1]+='<a href=”http://cnn.com”>CNN</a>’
linkset[1]+='<a href=”http://news.bbc.co.uk”>BBC News</a>’
linkset[1]+='<a href=”http://www.washingtonpost.com”>Washington Post</a>’

////No need to edit beyond here

var ie5=document.all && !window.opera
var ns6=document.getElementById

if (ie5||ns6)
document.write(‘<div id=”popitmenu” onMouseover=”clearhidemenu();” onMouseout=”dynamichide(event)”></div>’)

function iecompattest(){
return (document.compatMode && document.compatMode.indexOf(“CSS”)!=-1)? document.documentElement : document.body
}

function showmenu(e, which, optWidth){
if (!document.all&&!document.getElementById)
return
clearhidemenu()
menuobj=ie5? document.all.popitmenu : document.getElementById(“popitmenu”)
menuobj.innerHTML=which
menuobj.style.width=(typeof optWidth!=”undefined”)? optWidth : defaultMenuWidth
menuobj.contentwidth=menuobj.offsetWidth
menuobj.contentheight=menuobj.offsetHeight
eventX=ie5? event.clientX : e.clientX
eventY=ie5? event.clientY : e.clientY
//Find out how close the mouse is to the corner of the window
var rightedge=ie5? iecompattest().clientWidth-eventX : window.innerWidth-eventX
var bottomedge=ie5? iecompattest().clientHeight-eventY : window.innerHeight-eventY
//if the horizontal distance isn’t enough to accomodate the width of the context menu
if (rightedge<menuobj.contentwidth)
//move the horizontal position of the menu to the left by it’s width
menuobj.style.left=ie5? iecompattest().scrollLeft+eventX-menuobj.contentwidth+”px” : window.pageXOffset+eventX-menuobj.contentwidth+”px”
else
//position the horizontal position of the menu where the mouse was clicked
menuobj.style.left=ie5? iecompattest().scrollLeft+eventX+”px” : window.pageXOffset+eventX+”px”
//same concept with the vertical position
if (bottomedge<menuobj.contentheight)
menuobj.style.top=ie5? iecompattest().scrollTop+eventY-menuobj.contentheight+”px” : window.pageYOffset+eventY-menuobj.contentheight+”px”
else
menuobj.style.top=ie5? iecompattest().scrollTop+event.clientY+”px” : window.pageYOffset+eventY+”px”
menuobj.style.visibility=”visible”
return false
}

function contains_ns6(a, b) {
//Determines if 1 element in contained in another- by Brainjar.com
while (b.parentNode)
if ((b = b.parentNode) == a)
return true;
return false;
}

function hidemenu(){
if (window.menuobj)
menuobj.style.visibility=”hidden”
}

function dynamichide(e){
if (ie5&&!menuobj.contains(e.toElement))
hidemenu()
else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
hidemenu()
}

function delayhidemenu(){
delayhide=setTimeout(“hidemenu()”,500)
}

function clearhidemenu(){
if (window.delayhide)
clearTimeout(delayhide)
}

if (ie5||ns6)
document.onclick=hidemenu

</script>
<a href=”#” onMouseover=”showmenu(event,linkset[0])” onMouseout=”delayhidemenu()”>Webmaster Links</a><br><br>
[/CODE]

to post a comment
JavaScript

5 Comments(s)

Copy linkTweet thisAlerts:
@FangNov 19.2010 — The menu has to be fully loaded before GreyBox is initiated
Copy linkTweet thisAlerts:
@BigGrecianauthorNov 19.2010 — Surely it is by the time the onmouseover is completed?
Copy linkTweet thisAlerts:
@FangNov 20.2010 — GreyBox creates events for each link that requires a popup. These links must already be in the dom tree.

Also the anchor attributes are not the same as the example given by GreyBox. This could be another source of problems.
Copy linkTweet thisAlerts:
@BigGrecianauthorNov 21.2010 — For some reason it does't call it when I try add to the menu just using window.open which is why I'm still stumped.

[CODE]
linkset[0]+="<a onclick='window.open('http://www.google.com','test','width=200,height=100')'>Test</a>"
[/CODE]
Copy linkTweet thisAlerts:
@FangNov 22.2010 — [CODE]linkset[0]='<a href="http://www.google.com" onclick="return GB_showCenter('Test', this.href)">Test</a>'
[/CODE]
×

Success!

Help @BigGrecian spread the word by sharing this article on Twitter...

Tweet This
Sign in
Forgot password?
Sign in with TwitchSign in with GithubCreate Account
about: ({
version: 0.1.9 BETA 6.16,
whats_new: community page,
up_next: more Davinci•003 tasks,
coming_soon: events calendar,
social: @webDeveloperHQ
});

legal: ({
terms: of use,
privacy: policy
});
changelog: (
version: 0.1.9,
notes: added community page

version: 0.1.8,
notes: added Davinci•003

version: 0.1.7,
notes: upvote answers to bounties

version: 0.1.6,
notes: article editor refresh
)...
recent_tips: (
tipper: @nearjob,
tipped: article
amount: 1000 SATS,

tipper: @meenaratha,
tipped: article
amount: 1000 SATS,

tipper: @meenaratha,
tipped: article
amount: 1000 SATS,
)...