2017-09-30 16 views
0

나는 반복없이 웹 사이트로 무작위로 리디렉션되는 tampermonkey 스크립트를 만들고 싶습니다. 모든 웹 사이트를 보았 으면 스크립트가 완료되었음을 알리는 경고가 표시되기를 바랍니다.자바 스크립트 - 반복없이 웹 사이트로 무작위로 리디렉션하는 방법은 무엇입니까?

여기에서 스크립트를 사용했지만 (How to redirect to one out of given set of sites?) 웹 사이트를 반복합니다.

어떻게해야합니까?

// ==UserScript== 
// @name  Cat slideshow 
// @match  https://i.imgur.com/homOZTh.jpg 
// @match  https://i.imgur.com/NMDCQtA.jpg 
// @match  https://i.imgur.com/iqm9LoG.jpg 
// ==/UserScript== 

var urlsToLoad = [ 
    'https://i.imgur.com/homOZTh.jpg', 
    'https://i.imgur.com/NMDCQtA.jpg', 
    'https://i.imgur.com/iqm9LoG.jpg', 
]; 

setTimeout (GotoRandomURL, 4000); 

function GotoRandomURL() { 
    var numUrls  = urlsToLoad.length; 
    var urlIdx  = urlsToLoad.indexOf (location.href); 
    if (urlIdx >= 0) { 
     urlsToLoad.splice (urlIdx, 1); 
     numUrls--; 
    } 

    urlIdx   = Math.floor (Math.random() * numUrls); 
    location.href = urlsToLoad[urlIdx]; 
} 
+0

내 대답을 받아주십시오. –

답변

1

EDIT : 코드의 math.random 섹션을 수정했습니다.

이렇게하면됩니다. 난 그냥 배열 복사본을 만들고 URL을 탐색 한 후 복사 된 배열에서 그 URL을 제거합니다. 모든 URL을 검토하고 다시 시작한 후에 만 ​​URL을 반복합니다.

const urlsToLoad = [ 
    'https://i.imgur.com/homOZTh.jpg', 
    'https://i.imgur.com/NMDCQtA.jpg', 
    'https://i.imgur.com/iqm9LoG.jpg', 
]; 

let copyOfUrlsToLoad = []; 

setTimeout(goToRandomURL, 4000); 

function goToRandomURL() { 
    if (copyOfUrlsToLoad.length === 0) { 
    copyOfUrlsToLoad = urlsToLoad; 
    } 
    urlIdx = getRandomInt(0, copyOfUrlsToLoad.length); 
    location.href = copyOfUrlsToLoad[urlIdx]; 
    copyOfUrlsToLoad.splice(urlIdx, 1); 
} 

// This function comes from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random#Getting_a_random_integer_between_two_values 
function getRandomInt(min, max) { 
    min = Math.ceil(min); 
    max = Math.floor(max); 
    return Math.floor(Math.random() * (max - min)) + min; //The maximum is exclusive and the minimum is inclusive 
} 

새 탭 또는 창에서 URL을 열려면

this answer 다음과 location.href 라인을 교체 말한다 : 당신을 도움이 있다면

window.open(copyOfUrlsToLoad[urlIdx], '_blank');

+0

보이지 않는 페이지 롤오버는 어떻게 유지됩니까? (나는 끈기가 없어 보인다) – dandavis

+0

죄송합니다. 나는 그 질문의 일부를 놓친 것 같다. 나는 tampermonkey 스크립트에 대한 경험이 없습니다. 그러나 내가 작성한 코드가 아직 도움을 줄 수 있기를 바랍니다. –