Intel XDK: document.location.href ведет на неправильную страницу

Здравствуйте, сообщество Stack Overflow, я искал и пробовал разные вещи, но ничего не работает. В моем проекте Intel XDK, когда я пытаюсь использовать location.location.href = "#EndGame" или другие его формы, страница меняется, но она меняется на другую страницу, чем та, которую я просил, в моем случае она изменилась на «главную». Это произошло правильно, когда я использовал кнопку, но не с JavaScript. Я проверил свой код и не думаю, что там есть что-то, что должно вызвать проблему. Так это ошибка? Если это так, можете ли вы предложить мне способ обойти это?

Я не очень хорошо разбираюсь в JavaScript и HTML5, поэтому это может показаться плохим вопросом.

Это кнопка:

<a class="button widget uib_w_3 d-margins PictWid" data-uib="app_framework/button" data-ver="1" id="Start" style=" margin:0px auto;display:block" onclick="GameLoading()" href="#GamePlay" data-transition="fade">Start</a>

Это js-код:

    function GameOver()
{
     window.clearInterval(Timer);
    window.clearInterval(Timer2);
 w4=0
    for (i = 0; i < level; i++) 
    {
        CenterX[w4] = -100;
        CenterY[w4] = -100;
        w4+=1;
    }

    ShowGold();
    Draw1();

    level=0;
m=0;
k=0;
k2=0;
x3= 0+24.72;
y3 = hei2 - 24.72;
vx=0;
vy=0;
x2 = wid2/2;
y2 = hei2/2;
x = wid2/2;
y = hei2/2;

    setTimeout(function(){document.location.href = "#EndGame"},500);
    EndGamePage();
}

function EndGamePage()
{
     wid2 = screen.width;
    hei2 = screen.height;
    wid = screen.width - 20;
    hei = screen.height - 20;
if (wid < hei)
{   
    //alert("Testing2!")
    document.getElementById("Title2").style.width = wid + "px";
    document.getElementById("Start2").style.width = wid + "px";
    document.getElementById("Title2").style.marginTop = hei2*0.15 + "px";

} else
{
   // alert("Testing3!")
    document.getElementById("Title2").style.width =  hei + "px";
    document.getElementById("Start2").style.width = hei + "px";
    document.getElementById("Title2").style.marginTop = wid2*0.15 + "px";
} 

}

person user3904599    schedule 03.08.2014    source источник
comment
document.location.hash = '#EndGame' ?   -  person iwege    schedule 08.08.2014
comment
Эй, спасибо за ответ. К сожалению, пытаясь связать его с другим html-файлом (который не был ответом), я по ошибке удалил свой main.js. Блин, 2 недели работы. Я думаю, причина может заключаться в том, что в моем файле js была логическая ошибка, которую я не мог найти. Кстати, я попробовал document.location.hash = '#EndGame'.   -  person user3904599    schedule 09.08.2014


Ответы (3)


Вы не можете сделать так, чтобы ссылка обрабатывала как href, так и функцию, запускаемую по клику, поэтому правильное решение — добавить эту строку в вашу функцию GameLoading() или вызвать новую функцию из этой функции:

window.location+="/#EndGame"

Не уверен, что это будет работать с Intel XDK или нет, но попробовать стоит.

person ProllyGeek    schedule 24.01.2015

Попробуй это

location.hash = "#EndGame";
person salm youtube    schedule 24.01.2015
comment
К сожалению, это не работает (у меня та же проблема, что и у OP) - person Jack L.; 26.03.2015

После 6 месяцев опыта я обнаружил, что лучший способ для меня - использовать то, что называется "показать" функцию/метод. Вот:

    function show(shown, hidden, hidden2, hidden3, hidden4) {
        document.getElementById(shown).style.display = 'block';
        document.getElementById(hidden).style.display = 'none';
        document.getElementById(hidden2).style.display = 'none';
        document.getElementById(hidden3).style.display = 'none';
        document.getElementById(hidden4).style.display = 'none';

        return false;
    }    

Что он делает, так это просто показывает или скрывает указанный div, если вы даете ему свои идентификаторы. Итак, в кнопке вы могли бы иметь:

<a onclick="show('pagetwo', 'pagezero', 'pagethree', 'pageone', 'pagefour');" id='Start' class="ui-btn">Start</a>

person user3904599    schedule 02.02.2015