www.webdeveloper.com
Results 1 to 3 of 3

Thread: Object is null in IE 8; Firefox

  1. #1
    Join Date
    Nov 2008
    Posts
    14

    Object is null in IE 8; Firefox

    I have a data tree that works in IE 6 and 7, but won't open in IE 8 or Firefox.
    Debugging tells me that in foldercontent.style.display="", style is a null object. Does anyone know how I can make this work or should I just scrap it and try another script?


    Code:
    var head="display:''"
    		img1=new Image()
    		img1.src="<%= renderResponse.encodeURL(renderRequest.getContextPath() + "/images/plus.gif") %>"
    		img2=new Image()
    		img2.src="<%= renderResponse.encodeURL(renderRequest.getContextPath() + "/images/minus.gif") %>"
    		
    		var ns6=document.getElementById&&!document.all
    		var ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1
    		
    		function checkcontained(e){
    		var iscontained=0
    		cur=ns6? e.target : event.srcElement
    		i=0
    		if (cur.id=="foldheader")
    		iscontained=1
    		else
    		while (ns6&&cur.parentNode||(ie4&&cur.parentElement)){
    		if (cur.id=="foldheader"||cur.id=="foldinglist"){
    		iscontained=(cur.id=="foldheader")? 1 : 0
    		break
    		}
    		cur=ns6? cur.parentNode : cur.parentElement
    		}
    		
    		if (iscontained){
    		var foldercontent=ns6? cur.nextSibling.nextSibling : cur.all.tags("UL")[0]
    		if (foldercontent.style.display=="none"){
    		foldercontent.style.display=""
    		cur.style.listStyleImage="url(<%= renderResponse.encodeURL(renderRequest.getContextPath() + "/images/minus.gif") %>)"
    		}
    		else{
    		foldercontent.style.display="none"
    		cur.style.listStyleImage="url(<%= renderResponse.encodeURL(renderRequest.getContextPath() + "/images/plus.gif") %>)"
    		}
    		}
    		}
    		
    		if (ie4||ns6)
    		document.onclick=checkcontained

  2. #2
    Join Date
    Nov 2009
    Posts
    1
    Hi there

    Did you manage to resolve this? I have the same problem.

    Thanks

  3. #3
    Join Date
    Nov 2008
    Posts
    14

    object null in IE 8

    Hello Arresteddevelop,

    I removed the Dynamic Drive javascript that they had in the head of their jsp, and dropped in a link to a modified script.

    like so.

    Code:
    <SCRIPT type="text/javascript" src="<&#37;= renderResponse.encodeURL(renderRequest.getContextPath() + "/js/simpletreemenu.js") %>"></SCRIPT>
    </script>
    
    <SCRIPT language="javascript">
    
    ddtreemenu.closefolder='<%= renderResponse.encodeURL(renderRequest.getContextPath() + "/images/plus.gif") %>'; //set image path to "closed" folder image
    
    ddtreemenu.openfolder='<%= renderResponse.encodeURL(renderRequest.getContextPath() + "/images/minus.gif") %>'; //set image path to "open" folder image
    
    	function submitCode(code,title) {
    		dcsMultiTrack("DCS.dcsuri","/duv/"+code+".exe","WT.ti",code);
    		document.duv_products.product.value = code;
    		document.duv_products.title.value=title;
    		document.duv_products.submit();
    	}
    </SCRIPT>

    Here is the script I used.


    Code:
    var persisteduls=new Object()
    var ddtreemenu=new Object()
    
    
    
    //////////No need to edit beyond here///////////////////////////
    
    ddtreemenu.createTree=function(treeid, enablepersist, persistdays){
    var ultags=document.getElementById(treeid).getElementsByTagName("ul")
    if (typeof persisteduls[treeid]=="undefined")
    persisteduls[treeid]=(enablepersist==true && ddtreemenu.getCookie(treeid)!="")? ddtreemenu.getCookie(treeid).split(",") : ""
    for (var i=0; i<ultags.length; i++)
    ddtreemenu.buildSubTree(treeid, ultags[i], i)
    if (enablepersist==true){ //if enable persist feature
    var durationdays=(typeof persistdays=="undefined")? 1 : parseInt(persistdays)
    ddtreemenu.dotask(window, function(){ddtreemenu.rememberstate(treeid, durationdays)}, "unload") //save opened UL indexes on body unload
    }
    }
    
    ddtreemenu.buildSubTree=function(treeid, ulelement, index){
    ulelement.parentNode.className="submenu"
    if (typeof persisteduls[treeid]=="object"){ //if cookie exists (persisteduls[treeid] is an array versus "" string)
    if (ddtreemenu.searcharray(persisteduls[treeid], index)){
    ulelement.setAttribute("rel", "open")
    ulelement.style.display="block"
    ulelement.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")"
    }
    else
    ulelement.setAttribute("rel", "closed")
    } //end cookie persist code
    else if (ulelement.getAttribute("rel")==null || ulelement.getAttribute("rel")==false) //if no cookie and UL has NO rel attribute explicted added by user
    ulelement.setAttribute("rel", "closed")
    else if (ulelement.getAttribute("rel")=="open") //else if no cookie and this UL has an explicit rel value of "open"
    ddtreemenu.expandSubTree(treeid, ulelement) //expand this UL plus all parent ULs (so the most inner UL is revealed!)
    ulelement.parentNode.onclick=function(e){
    var submenu=this.getElementsByTagName("ul")[0]
    if (submenu.getAttribute("rel")=="closed"){
    submenu.style.display="block"
    submenu.setAttribute("rel", "open")
    ulelement.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")"
    }
    else if (submenu.getAttribute("rel")=="open"){
    submenu.style.display="none"
    submenu.setAttribute("rel", "closed")
    ulelement.parentNode.style.backgroundImage="url("+ddtreemenu.closefolder+")"
    }
    ddtreemenu.preventpropagate(e)
    }
    ulelement.onclick=function(e){
    ddtreemenu.preventpropagate(e)
    }
    }
    
    ddtreemenu.expandSubTree=function(treeid, ulelement){ //expand a UL element and any of its parent ULs
    var rootnode=document.getElementById(treeid)
    var currentnode=ulelement
    currentnode.style.display="block"
    currentnode.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")"
    while (currentnode!=rootnode){
    if (currentnode.tagName=="UL"){ //if parent node is a UL, expand it too
    currentnode.style.display="block"
    currentnode.setAttribute("rel", "open") //indicate it's open
    currentnode.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")"
    }
    currentnode=currentnode.parentNode
    }
    }
    
    ddtreemenu.flatten=function(treeid, action){ //expand or contract all UL elements
    var ultags=document.getElementById(treeid).getElementsByTagName("ul")
    for (var i=0; i<ultags.length; i++){
    ultags[i].style.display=(action=="expand")? "block" : "none"
    var relvalue=(action=="expand")? "open" : "closed"
    ultags[i].setAttribute("rel", relvalue)
    ultags[i].parentNode.style.backgroundImage=(action=="expand")? "url("+ddtreemenu.openfolder+")" : "url("+ddtreemenu.closefolder+")"
    }
    }
    
    ddtreemenu.rememberstate=function(treeid, durationdays){ //store index of opened ULs relative to other ULs in Tree into cookie
    var ultags=document.getElementById(treeid).getElementsByTagName("ul")
    var openuls=new Array()
    for (var i=0; i<ultags.length; i++){
    if (ultags[i].getAttribute("rel")=="open")
    openuls[openuls.length]=i //save the index of the opened UL (relative to the entire list of ULs) as an array element
    }
    if (openuls.length==0) //if there are no opened ULs to save/persist
    openuls[0]="none open" //set array value to string to simply indicate all ULs should persist with state being closed
    ddtreemenu.setCookie(treeid, openuls.join(","), durationdays) //populate cookie with value treeid=1,2,3 etc (where 1,2... are the indexes of the opened ULs)
    }
    
    ////A few utility functions below//////////////////////
    
    ddtreemenu.getCookie=function(Name){ //get cookie value
    var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
    if (document.cookie.match(re)) //if cookie found
    return document.cookie.match(re)[0].split("=")[1] //return its value
    return ""
    }
    
    ddtreemenu.setCookie=function(name, value, days){ //set cookei value
    var expireDate = new Date()
    //set "expstring" to either future or past date, to set or delete cookie, respectively
    var expstring=expireDate.setDate(expireDate.getDate()+parseInt(days))
    document.cookie = name+"="+value+"; expires="+expireDate.toGMTString()+"; path=/";
    }
    
    ddtreemenu.searcharray=function(thearray, value){ //searches an array for the entered value. If found, delete value from array
    var isfound=false
    for (var i=0; i<thearray.length; i++){
    if (thearray[i]==value){
    isfound=true
    thearray.shift() //delete this element from array for efficiency sake
    break
    }
    }
    return isfound
    }
    
    ddtreemenu.preventpropagate=function(e){ //prevent action from bubbling upwards
    if (typeof e!="undefined")
    e.stopPropagation()
    else
    event.cancelBubble=true
    }
    
    ddtreemenu.dotask=function(target, functionref, tasktype){ //assign a function to execute to an event handler (ie: onunload)
    var tasktype=(window.addEventListener)? tasktype : "on"+tasktype
    if (target.addEventListener)
    target.addEventListener(tasktype, functionref, false)
    else if (target.attachEvent)
    target.attachEvent(tasktype, functionref)
    }
    This worked for me in every browser. Hope it is helpful.

    Good Luck,
    J Rye Morgan


    P.S. Also the list tags in the view jsp were as follows.

    <form name="duv_products" method="post" action="<portlet:actionURL/>" >
    <input type="hidden" name="<%=Constants.PRODUCT_CODE%>">
    <input type="hidden" name="<%=Constants.PRODUCT_TITLE%>">

    <DIV id="duvmenu">

    <ul id="treemenu1" class="treeview">
    <%= sessionBean.getMarkup() %>
    </ul>

    <script type="text/javascript">
    //ddtreemenu.createTree(treeid, enablepersist, opt_persist_in_days (default is 1))
    ddtreemenu.createTree("treemenu1", false)
    </script>

    </DIV>
    </imput>
    </imput>
    </form>
    Last edited by JRye; 11-18-2009 at 09:20 AM.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Posting Permissions

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

"

"

X vBulletin 4.2.2 Debug Information

  • Page Generation 0.13327 seconds
  • Memory Usage 2,883KB
  • Queries Executed 15 (?)
More Information
Template Usage (33):
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_global_above_footer
  • (1)ad_global_below_navbar
  • (1)ad_global_header1
  • (1)ad_global_header2
  • (1)ad_navbar_below
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)ad_thread_first_post_content
  • (1)ad_thread_last_post_content
  • (3)bbcode_code
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)headinclude_bottom
  • (3)memberaction_dropdown
  • (1)navbar
  • (4)navbar_link
  • (1)navbar_moderation
  • (1)navbar_noticebit
  • (1)navbar_tabs
  • (2)option
  • (3)postbit
  • (3)postbit_onlinestatus
  • (3)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available (6):
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files (26):
  • ./showthread.php
  • ./global.php
  • ./includes/class_bootstrap.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/functions_navigation.php
  • ./includes/class_friendly_url.php
  • ./includes/class_hook.php
  • ./includes/class_bootstrap_framework.php
  • ./vb/vb.php
  • ./vb/phrase.php
  • ./includes/functions_facebook.php
  • ./includes/functions_calendar.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_notice.php
  • ./packages/vbattach/attach.php
  • ./vb/types.php
  • ./vb/cache.php
  • ./vb/cache/db.php
  • ./vb/cache/observer/db.php
  • ./vb/cache/observer.php 

Hooks Called (71):
  • init_startup
  • friendlyurl_resolve_class
  • init_startup_session_setup_start
  • database_pre_fetch_array
  • database_post_fetch_array
  • init_startup_session_setup_complete
  • global_bootstrap_init_start
  • global_bootstrap_init_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • load_show_variables
  • load_forum_show_variables
  • global_state_check
  • global_bootstrap_complete
  • global_start
  • style_fetch
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • strip_bbcode
  • friendlyurl_clean_fragment
  • friendlyurl_geturl
  • forumjump
  • cache_templates
  • cache_templates_process
  • template_register_var
  • template_render_output
  • fetch_template_start
  • fetch_template_complete
  • parse_templates
  • fetch_musername
  • notices_check_start
  • notices_noticebit
  • process_templates_complete
  • friendlyurl_redirect_canonical
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • memberaction_dropdown
  • tag_fetchbit
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • build_navigation_data
  • build_navigation_array
  • check_navigation_permission
  • process_navigation_links_start
  • process_navigation_links_complete
  • set_navigation_menu_element
  • build_navigation_menudata
  • build_navigation_listdata
  • build_navigation_list
  • set_navigation_tab_main
  • set_navigation_tab_fallback
  • navigation_tab_complete
  • fb_like_button
  • showthread_complete
  • page_templates