2017-10-10 1 views
0

사용자가 웹 사이트 목록에 있는지 확인하는 Greasemonkey 사용자 스크립트를 작성하려고했습니다. 사용자가 그 중 하나에 실제로있는 경우도메인 + TLD 조합으로 도메인 만 조각화

, 스크립트는 경고합니다 : 충분히

을 이미 도메인와 함께!

스크립트의 목적은 사용자가이 사이트를 방문하는 것을 중지한다는 것을 상기시키는 것입니다 (중독과 같은 행동).

출력에는 도메인이 포함되어야합니다 (, 제외).

let sites = ['walla.com', 'mako.co.il']; 
let tlds = new RegExp('\.+(com|co.il)'); 

for (let i = 0; i < sites.length; i++) { 
    if (window.location.href.indexOf(sites[i]) != -1) { 
     sites.forEach((e)=>{ 
      e.replace(tlds, '').split('.').pop(), 
     }); 

    alert(` Enough with this ${sites[i]} already! `); 
    } 
} 

없음 콘솔 오류 :

나는 (코드 TLD를 모음에서 실행되며 다음을 벗겨하는 컬렉션을 사용)에 실패하지 다음 코드를 시도했습니다.

재현하려면 Greasemoneky/Tampermonkey에 스크립트를 설치하고 나열된 사이트에서 시도하십시오.

+0

'let tlds =/\. (com | co \ .il) /;'또는'let tlds =/\. (com | co \ .il) $ /;' –

+0

왜 투표가 실패합니까? 나는 목적, 문제, 시도, 오류 맥락, 그리고 재생산을 달성하려고 애쓰는 것을 설명했다. – OsiOs

답변

1

당신은 사이트를 반복하고 HREF 사이트 (sites[i])를 포함하는 경우, 루프 도메인 후 모든 교체 (돈 이후), 경고 및 휴식해야합니다

const sites = ['walla.com', 'mako.co.il']; 
 
const regex = /\..+/; 
 
const href = 'http://www.mako.co.il/news?partner=NavBar'; // this replace window.location.href for demo purposes 
 

 
for (let i = 0; i < sites.length; i++) { 
 
    if (href.includes(sites[i])) { // if the href includes the sites[i] 
 
    const domain = sites[i].replace(regex, ''); // remove the 1st dot and everything after it to get the domain name 
 

 
    alert(` Enough with this ${domain} already! `); 
 
    
 
    break; // or return if in a function 
 
    } 
 
}

+0

Shalom Ori. 큰 호소에서, 여기에서 한 것과 내가 한 것의 차이점에 대해 자세히 설명해주십시오. 당신은 당신이 "도트에서 모든 것을 바꾼다"고 말합니다. 그러나 나는 당신이 정확히 의미하는 것을 놓칩니다. regex 변수를 if 내부로 옮기고 특정 도메인에 새 변수를 추가 한 것을 볼 수 있습니다 (왜 이것이 가능한 한 유연 해지기를 겸허하게 생각합니다). – OsiOs

+0

신입생으로서, 나는 당신의 정성을 고맙게 생각합니다! – OsiOs

+0

코드를 업데이트하고 의견을 추가했습니다. 지금은 더 명확한가요? 당신이 찾고 있던 최종 결과입니까? –

관련 문제