SitePoint Sponsor

User Tag List

Results 1 to 2 of 2
  1. #1
    SitePoint Enthusiast
    Join Date
    Apr 2009
    Posts
    29
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Cool Javascript Error "internet explorer cannot"

    The Javascript code provided keeps coming back with "internet explorer cannot open the internet site... operation aborted" In IE. (works fine in FireFox) Is there something wrong with the code?


    Javascript:

    <script type="text/javascript">
    var anylinkmenu1={divclass:'anylinkmenu', inlinestyle:'', linktarget:''}
    anylinkmenu1.items=[
    ["service", "service.html"],
    ["service2", "service2.html"]
    ]

    var anylinkmenu={

    menusmap: {},
    effects: {delayhide: 200, shadow:{enabled:true, opacity:0.3, depth: [5, 5]}, fade:{enabled:false, duration:500}},

    dimensions: {},

    getoffset:function(what, offsettype){
    return (what.offsetParent)? what[offsettype]+this.getoffset(what.offsetParent, offsettype) : what[offsettype]
    },

    getoffsetof:function(el){
    el._offsets={left:this.getoffset(el, "offsetLeft"), top:this.getoffset(el, "offsetTop"), h: el.offsetHeight}
    },

    getdimensions:function(menu){
    this.dimensions={anchorw:menu.anchorobj.offsetWidth, anchorh:menu.anchorobj.offsetHeight,
    docwidthwindow.innerWidth ||this.standardbody.clientWidth)-20,
    docheightwindow.innerHeight ||this.standardbody.clientHeight)-15,
    docscrollx:window.pageXOffset || this.standardbody.scrollLeft,
    docscrolly:window.pageYOffset || this.standardbody.scrollTop
    }
    if (!this.dimensions.dropmenuw){
    this.dimensions.dropmenuw=menu.dropmenu.offsetWidth
    this.dimensions.dropmenuh=menu.dropmenu.offsetHeight
    }
    },

    isContained:function(m, e){
    var e=window.event || e
    var c=e.relatedTarget || ((e.type=="mouseover")? e.fromElement : e.toElement)
    while (c && c!=m)try {c=c.parentNode} catch(e){c=m}
    if (c==m)
    return true
    else
    return false
    },

    setopacity:function(el, value){
    el.style.opacity=value
    if (typeof el.style.opacity!="string"){
    el.style.MozOpacity=value
    if (el.filters){
    el.style.filter="progidXImageTransform.Microsoft.alpha(opacity="+ value*100 +")"
    }
    }
    },

    showmenu:function(menuid){
    var menu=anylinkmenu.menusmap[menuid]
    clearTimeout(menu.hidetimer)
    this.getoffsetof(menu.anchorobj)
    this.getdimensions(menu)
    var posx=menu.anchorobj._offsets.left + (menu.orientation=="lr"? this.dimensions.anchorw : 0)
    var posy=menu.anchorobj._offsets.top+this.dimensions.anchorh - (menu.orientation=="lr"? this.dimensions.anchorh : 0)
    if (posx+this.dimensions.dropmenuw+this.effects.shadow.depth[0]>this.dimensions.docscrollx+this.dimensions.docwidth){
    posx=posx-this.dimensions.dropmenuw + (menu.orientation=="lr"? -this.dimensions.anchorw : this.dimensions.anchorw)
    }
    if (posy+this.dimensions.dropmenuh>this.dimensions.docscrolly+this.dimensions.docheight){
    posy=Math.max(posy-this.dimensions.dropmenuh - (menu.orientation=="lr"? -this.dimensions.anchorh : this.dimensions.anchorh), this.dimensions.docscrolly)
    }
    if (this.effects.fade.enabled){
    this.setopacity(menu.dropmenu, 0)
    if (this.effects.shadow.enabled)
    this.setopacity(menu.shadow, 0)
    }
    menu.dropmenu.setcss({leftosx+'px', toposy+'px', visibility:'visible'})
    if (this.effects.shadow.enabled){
    menu.shadow.setcss({leftosx+anylinkmenu.effects.shadow.depth[0]+'px', toposy+anylinkmenu.effects.shadow.depth[1]+'px', visibility:'visible'})
    }
    if (this.effects.fade.enabled){
    clearInterval(menu.animatetimer)
    menu.curanimatedegree=0
    menu.starttime=new Date().getTime()
    menu.animatetimer=setInterval(function(){anylinkmenu.revealmenu(menuid)}, 20)
    }
    },

    revealmenu:function(menuid){
    var menu=anylinkmenu.menusmap[menuid]
    var elapsed=new Date().getTime()-menu.starttime
    if (elapsed<this.effects.fade.duration){
    this.setopacity(menu.dropmenu, menu.curanimatedegree)
    if (this.effects.shadow.enabled)
    this.setopacity(menu.shadow, menu.curanimatedegree*this.effects.shadow.opacity)
    }
    else{
    clearInterval(menu.animatetimer)
    this.setopacity(menu.dropmenu, 1)
    menu.dropmenu.style.filter=""
    }
    menu.curanimatedegree=(1-Math.cos((elapsed/this.effects.fade.duration)*Math.PI)) / 2
    },

    setcss:function(param){
    for (prop in param){
    this.style[prop]=param[prop]
    }
    },

    hidemenu:function(menuid){
    var menu=anylinkmenu.menusmap[menuid]
    clearInterval(menu.animatetimer)
    menu.dropmenu.setcss({visibility:'hidden', left:0, top:0})
    menu.shadow.setcss({visibility:'hidden', left:0, top:0})
    },

    getElementsByClass:function(targetclass){
    if (document.querySelectorAll)
    return document.querySelectorAll("."+targetclass)
    else{
    var classnameRE=new RegExp("(^|\\s+)"+targetclass+"($|\\s+)", "i")
    var pieces=[]
    var alltags=document.all? document.all : document.getElementsByTagName("*")
    for (var i=0; i<alltags.length; i++){
    if (typeof alltags[i].className=="string" && alltags[i].className.search(classnameRE)!=-1)
    pieces[pieces.length]=alltags[i]
    }
    return pieces
    }
    },

    addDiv:function(divid, divclass, inlinestyle){
    var el=document.createElement("div")
    if (divid)
    el.id=divid
    el.className=divclass
    if (inlinestyle!="" && typeof el.style.cssText=="string")
    el.style.cssText=inlinestyle
    else if (inlinestyle!="")
    el.setAttribute('style', inlinestyle)
    document.body.appendChild(el)
    return el
    },

    getmenuHTML:function(menuobj){
    var menucontent=[]
    var frag=""
    for (var i=0; i<menuobj.items.length; i++){
    frag+='<li><a href="' + menuobj.items[i][1] + '" target="' + menuobj.linktarget + '">' + menuobj.items[i][0] + '</a></li>\n'
    if (menuobj.items[i][2]=="efc" || i==menuobj.items.length-1){
    menucontent.push(frag)
    frag=""
    }
    }
    if (typeof menuobj.cols=="undefined")
    return '<ul>\n' + menucontent.join('') + '\n</ul>'
    else{
    frag=""
    for (var i=0; i<menucontent.length; i++){
    frag+='<div class="' + menuobj.cols.divclass + '" style="' + menuobj.cols.inlinestyle + '">\n<ul>\n' + menucontent[i] + '</ul>\n</div>\n'
    }
    return frag
    }
    },

    addEvent:function(targetarr, functionref, tasktype){
    if (targetarr.length>0){
    var target=targetarr.shift()
    if (target.addEventListener)
    target.addEventListener(tasktype, functionref, false)
    else if (target.attachEvent)
    target.attachEvent('on'+tasktype, function(){return functionref.call(target, window.event)})
    this.addEvent(targetarr, functionref, tasktype)
    }
    },

    setupmenu:function(targetclass, anchorobj, pos){
    this.standardbody=(document.compatMode=="CSS1Compat")? document.documentElement : document.body
    var relattr=anchorobj.getAttribute("rel")
    dropmenuid=relattr.replace(/\[(\w+)\]/, '')
    var dropmenuvar=window[dropmenuid]
    var dropmenu=this.addDiv(null, dropmenuvar.divclass, dropmenuvar.inlinestyle)
    dropmenu.innerHTML=this.getmenuHTML(dropmenuvar)
    var menu=this.menusmap[targetclass+pos]={
    id: targetclass+pos,
    anchorobj: anchorobj,
    dropmenu: dropmenu,
    revealtype: (relattr.length!=dropmenuid.length && RegExp.$1=="click")? "click" : "mouseover",
    orientation: anchorobj.getAttribute("rev")=="lr"? "lr" : "ud",
    shadow: this.addDiv(null, "anylinkshadow", null)
    }
    menu.anchorobj._internalID=targetclass+pos
    menu.anchorobj._isanchor=true
    menu.dropmenu._internalID=targetclass+pos
    menu.shadow._internalID=targetclass+pos
    menu.dropmenu.setcss=this.setcss
    menu.shadow.setcss=this.setcss
    menu.shadow.setcss({width: menu.dropmenu.offsetWidth+"px", height:menu.dropmenu.offsetHeight+"px"})
    this.setopacity(menu.shadow, this.effects.shadow.opacity)
    this.addEvent([menu.anchorobj, menu.dropmenu, menu.shadow], function(e){
    var menu=anylinkmenu.menusmap[this._internalID]
    if (this._isanchor && menu.revealtype=="mouseover" && !anylinkmenu.isContained(this, e)){
    anylinkmenu.showmenu(menu.id)
    }
    else if (typeof this._isanchor=="undefined"){
    clearTimeout(menu.hidetimer)
    }
    }, "mouseover")
    this.addEvent([menu.anchorobj, menu.dropmenu, menu.shadow], function(e){
    if (!anylinkmenu.isContained(this, e)){
    var menu=anylinkmenu.menusmap[this._internalID]
    menu.hidetimer=setTimeout(function(){anylinkmenu.hidemenu(menu.id)}, anylinkmenu.effects.delayhide)
    }
    }, "mouseout")
    this.addEvent([menu.anchorobj, menu.dropmenu], function(e){
    var menu=anylinkmenu.menusmap[this._internalID]
    if ( this._isanchor && menu.revealtype=="click"){
    if (menu.dropmenu.style.visibility=="visible")
    anylinkmenu.hidemenu(menu.id)
    else
    anylinkmenu.showmenu(menu.id)
    if (e.preventDefault)
    e.preventDefault()
    return false
    }
    else
    menu.hidetimer=setTimeout(function(){anylinkmenu.hidemenu(menu.id)}, anylinkmenu.effects.delayhide)
    }, "click")
    },

    init:function(targetclass){
    var anchors=this.getElementsByClass(targetclass)
    for (var i=0; i<anchors.length; i++){
    this.setupmenu(targetclass, anchors[i], i)
    }
    }

    }
    </script>

  2. #2
    SitePoint Addict
    Join Date
    Dec 2007
    Posts
    358
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    There are a number of reasons for this but most common of them is described here:
    http://social.msdn.microsoft.com/For...1-c805660921f8

    You need to redesign you script to avoid such problem.
    I'm creating trouble-free Apache, PHP, MySQL installer, WITSuite,
    and use it to setup my development environment.
    Demo, support, contact. Questions?


Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •