SitePoint Sponsor

User Tag List

Results 1 to 2 of 2
  1. #1
    SitePoint Member
    Join Date
    Sep 2004
    Location
    orlando
    Posts
    18
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Question Javascript Redirect Won't Redirect...

    I have a javascript that I found for an iphone style menu. It works and allows me to click through the menu as long as it is within the list system. If I try to create an external link to a webpage. It doesn't load anything. Here is the code let me know if anyone knows the trick so I can link out. Below is the javascript used to create the flowing menu system. Let me know if you need the rest of the .css and html.

    Thanks in advance.

    ---------------------------------

    (function() {

    var animateX = -20;
    var animateInterval = 24;

    var currentPage = null;
    var currentDialog = null;
    var currentWidth = 0;
    var currentHash = location.hash;
    var hashPrefix = "#_";
    var pageHistory = [];

    addEventListener("load", function(event)
    {
    var body = document.getElementsByTagName("body")[0];
    for (var child = body.firstChild; child; child = child.nextSibling)
    {
    if (child.nodeType == 1 && child.getAttribute("selected") == "true")
    {
    showPage(child);
    break;
    }
    }

    setInterval(checkOrientAndLocation, 300);
    setTimeout(scrollTo, 0, 0, 1);
    }, false);

    addEventListener("click", function(event)
    {
    event.preventDefault();

    var link = event.target;
    while (link && link.localName.toLowerCase() != "a")
    link = link.parentNode;

    if (link && link.hash)
    {
    var page = document.getElementById(link.hash.substr(1));
    showPage(page);
    }
    }, true);

    function checkOrientAndLocation()
    {
    if (window.outerWidth != currentWidth)
    {
    currentWidth = window.outerWidth;

    var orient = currentWidth == 320 ? "profile" : "landscape";
    document.body.setAttribute("orient", orient);
    }

    if (location.hash != currentHash)
    {
    currentHash = location.hash;

    var pageId = currentHash.substr(hashPrefix.length);
    var page = document.getElementById(pageId);
    if (page)
    {
    var index = pageHistory.indexOf(pageId);
    var backwards = index != -1;
    if (backwards)
    pageHistory.splice(index, pageHistory.length);

    showPage(page, backwards);
    }
    }
    }

    function showPage(page, backwards)
    {
    if (currentDialog)
    {
    currentDialog.removeAttribute("selected");
    currentDialog = null;
    }

    if (page.className.indexOf("dialog") != -1)
    showDialog(page);
    else
    {
    location.href = currentHash = hashPrefix + page.id;
    pageHistory.push(page.id);

    var fromPage = currentPage;
    currentPage = page;

    var pageTitle = document.getElementById("pageTitle");
    pageTitle.innerHTML = page.title || "";

    var homeButton = document.getElementById("homeButton");
    if (homeButton)
    homeButton.style.display = ("#"+page.id) == homeButton.hash ? "none" : "inline";

    if (fromPage)
    setTimeout(swipePage, 0, fromPage, page, backwards);
    }
    }

    function swipePage(fromPage, toPage, backwards)
    {
    toPage.style.left = "100%";
    toPage.setAttribute("selected", "true");
    scrollTo(0, 1);

    var percent = 100;
    var timer = setInterval(function()
    {
    percent += animateX;
    if (percent <= 0)
    {
    percent = 0;
    fromPage.removeAttribute("selected");
    clearInterval(timer);
    }

    fromPage.style.left = (backwards ? (100-percent) : (percent-100)) + "%";
    toPage.style.left = (backwards ? -percent : percent) + "%";
    }, animateInterval);
    }

    function showDialog(form)
    {
    currentDialog = form;
    form.setAttribute("selected", "true");

    form.onsubmit = function(event)
    {
    event.preventDefault();
    form.removeAttribute("selected");

    var index = form.action.lastIndexOf("#");
    if (index != -1)
    showPage(document.getElementById(form.action.substr(index+1)));
    }

    form.onclick = function(event)
    {
    if (event.target == form)
    form.removeAttribute("selected");
    }
    }

    })();

    -----------

  2. #2
    I meant that to happen silver trophybronze trophy Raffles's Avatar
    Join Date
    Sep 2005
    Location
    Tanzania
    Posts
    4,662
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    The problem has to be somewhere here:

    Code:
    location.href = currentHash = hashPrefix + page.id;
    Try debugging it with Firebug or using alert() to check the logic is actually getting to that point.

    Also, use syntax highlighting for your code. It's mostly why nobody has replied to your thread until now, and I pretty much almost left immediately.


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
  •