javascript
2015-11-26 3 views 0 likes 
0

У меня есть этот файл на сервере: (index.html)Javascript странно цикл с OnLoad тела

<script src="script.js"></script>

Тогда script.js:

function generateUUID() { 
    var d = new Date().getTime(); 
    var uuid = 'xxx-xxx-4xx-yxxx-xxxxyyyyxxxx'.replace(/[xy]/g, function(c) { 
     var r = (d + Math.random()*16)%16 | 0; 
     d = Math.floor(d/16); 
     return (c=='x' ? r : (r&0x3|0x8)).toString(16); 
    }); 
    return uuid; 
}; 
window.onload=doit; 


function doit() { 
    var uuidme; 
    uuidme = generateUUID(); 
    window.location.href = "/test?uuid=" + uuidme; 
} 

а также прибудете varible сходит с ума, он никогда не перестает изменять код, который НЕ даже близок к тому, что я хотел бы.

+3

Ну, приписывая 'window.location.href' загрузит эту страницу. И если это та же самая страница, в которой находится код, она будет постоянно обновляться. Разве это не то, что вы хотите? Что вам нужно? –

+0

Если скрипт загружен в/test, он запускается каждый раз, когда он загружается, даже если он загружен строкой запроса. – LeFex

+0

@LeFex Есть ли способ обойти это? – StratHaxxs

ответ

0

перед перенаправлением проверьте URL-адрес, если вы уже находитесь в нужном месте с набором uuid. Вы можете сделать это путем сканирования URL для переменной uuid с помощью IndexOf window.location.href.indexOf('uuid=') == -1:

function generateUUID() { 
    var d = new Date().getTime(); 
    var uuid = 'xxx-xxx-4xx-yxxx-xxxxyyyyxxxx'.replace(/[xy]/g, function(c) { 
     var r = (d + Math.random()*16)%16 | 0; 
     d = Math.floor(d/16); 
     return (c=='x' ? r : (r&0x3|0x8)).toString(16); 
    }); 
    return uuid; 
}; 
window.onload=doit; 


function doit() { 
    // make sure we dont find uuid set in the url already 
    if(window.location.href.indexOf('uuid=') == -1) { 
     var uuidme; 
     uuidme = generateUUID(); 
     window.location.href = "/test?uuid=" + uuidme; 
    } 
} 
Смежные вопросы