2011-02-13 4 views
-1

안녕하세요. Google 크롬 용 작은 Greasemonkey 스크립트를 만들었습니다.이 스크립트는 성가신 새로운 사진보기 기능인 facebook을 제거해야했습니다. URL 끝에서 "& theater"를 제거하면됩니다. 저의 첫 번째 시도는 한 줄로 그 일을하는 것이 었습니다.문제 Facebook에서 스크립트 실행

if (window.location.toString().indexOf('www.facebook.com') >= 0) { 
    window.location.href = window.location.href.replace(/(&theater)$/, ''); 
} 

하지만 방금 페이지를 계속로드하고 스크립트를 반복 실행했습니다. 그래서 나는 페이지로드에서 호출 된 함수에이 코드를 넣을 것이라고 생각했습니다. 내 코드는 이제 다음과 같습니다.

window.onload = function() 
{ 
if (window.location.toString().indexOf('www.facebook.com') >= 0) { 
    window.location.href = window.location.href.replace(/(&theater)$/, ''); 
} 
} 

내 문제는 페이스 북 페이지를로드 할 때 window.onload가 호출되지 않는다는 것입니다. 다른 웹 사이트에서도 작동합니다 (함수 내부에 호출 여부를 확인하는 경고가 표시됩니다). 어떤 제안?

+0

당신이 해봤 unsafeWindow.onload = 함수() {}; ? – Shaz

+0

예. 작동하지 않습니다. –

+0

'alert (window.onload) '란 무엇입니까? 내가 Facebook에서 그것을 시도했을 때, 나는 기능을 되찾았다. – alex

답변

0

리디렉션 한 URL을 사용중인 경우에도 페이지를 새로 고침하기 때문에 끊임없이 새로 고침 루프를 만들었습니다. 이 같은 if 문을 수행의 당신은 더 나은 것 :

if ((window.location.host === 'www.facebook.com') && window.location.pathname.indexOf('&theater') > -1) { 
    // redirect here 
} 
0

는 당신 만 window.onload 하나를 허용하는 것이 될 수 있을까, 그리고 페이스 북은 아마 이미 그것을 사용? 단지 더 이상 다시로드 사이 -

onload 근무했다 즉, 당신은 여전히 ​​무한 루프이있을 것이다

Facebook

0

경우 ... alert(window.onload) 참조하십시오. :)

대부분의 상황 ... 루프를 피하려면로드 사이에 남아있는 플래그를 설정하십시오. 가장 쉬운 방법은 URL 매개 변수를 만드는 것입니다.

하지만이 경우 검색중인 내용을 변경할 수 있습니다 (현재).

뭔가 같은 :

if (/&theater/i.test (window.location.href)) 
{ 
    window.location.href = window.location.href.replace(/(&theater)$/, ''); 
}