2013-04-22 2 views
-1

GM 스크립트를 사용하여 여러 페이지를 연결했습니다. 난 그냥 다음 코드를 포함하는 스크립트를 작성하는 경우 :Greasemonkey가 Facebook에서 DOM을 변경하지 못했습니다.

$(".rfloat.uiButton").trigger('click'); 

그것은 목록의 페이지 수를 좋아한다 (나는 BTW jQuery를 사용하고 있습니다). 그러나 하단에 "더 많은 결과보기"라는 버튼이 있습니다. 이것들은 Ajax에 의해로드되고있다. 그래서, 난 그렇게처럼 DOM 프로그램에 부착되는 요소들을 내 스크립트를 업데이트 : 나는 "자세한 결과"새로운 페이지 결과가 DOM에 추가를 클릭

$("#pagelet_search_results_objects").bind("DOMSubtreeModified",HandleDOM_ChangeWithDelay); 

var zGbl_DOM_ChangeTimer = null; 

function HandleDOM_ChangeWithDelay (zEvent) { 
    if (typeof zGbl_DOM_ChangeTimer == "number") { 
     clearTimeout (zGbl_DOM_ChangeTimer); 
     zGbl_DOM_ChangeTimer = ''; 
    } 
    zGbl_DOM_ChangeTimer = setTimeout (HandleDOM_Change, 333); 
} 

function HandleDOM_Change() { 
    alert("New content loaded"); // This fires once 
    $("a.rfloat.uiButton").trigger('click'); 
} 

경고 화재 후. 그러나 클릭 트리거는 작동하지 않습니다. 마치 GM이 DOM에 적용된 변경 사항을 보지 않는 것입니다.

왜 이런가요?

편집 :

것은 그것은 그들을 클릭하지 여전히 업데이트 수를 표시하지만 것

alert($("a.rfloat.uiButton").length); 

하고.

답변

0

오류 콘솔 (Ctrl 키시프트J)이 무엇입니까라고?

지금까지는 $("a.rfloat.uiButton")과 일치하는 Facebook 페이지가 표시되지 않습니다. 하나에 링크하십시오.

그것은 아마도 FB가 추가 된 링크를 처리하는 다른 이벤트를 사용하는의

jQuery's .trigger() only operates on a small-subset of events.

시도 :

jQuery ('a.rfloat.uiButton').each (function() { 
    var clickEvent = document.createEvent ('MouseEvents'); 
    clickEvent.initEvent ('click', true, true); 
    this.dispatchEvent (clickEvent); 
} 

그것은 새로운 링크도 클릭 떨어져 발생하지 않는 수도 있습니다 . "Choosing and activating the right controls on an AJAX-driven site"을 참조하십시오.


번 이전 링크를 reclick 것보다 $("a.rfloat.uiButton").trigger('click'); 이상을 실행합니다. 이 일 수도 있고 일 수 있습니다.

관련 문제