2012-05-23 2 views
1

편집 : 게시물 하단의 해결책.GreaseMonkey와 함께 사용되는 특정 JQuery 함수가 상호 작용할 때까지 업데이트되지 않음

나는 내 페이스 북 뉴스 피드에서 특정 피드 항목을 걸러 내고 수정하기 위해 JQuery를 사용하는 맞춤형 GreaseMonkey 스크립트를 가지고있다. 그것은 좋은 일하고,하지만이 특정 하나가 제대로 작동하지 않습니다 : 이것은 어떻게해야 무엇

$("h6.uiStreamHeadline:contains('shared') a[id^='js_']").html("someone else"); 

는 특정 항목이 내 뉴스 피드에 공유되고있는 페이지의 이름을 대체합니다. 예를 들어 "John Smith가 Funny-Pictures-For-Everyone의 사진을 공유했습니다."라고 말하면이 기능은 "John Smith가 다른 사람의 사진을 공유했습니다"로 바꿉니다. 이 모든 작업을 잘

$("h6.uiStreamHeadline:contains('was tagged in')").closest("li").html("<li><i style='color:#CCCCCC;margin-left:15px;'>Post Hidden (someone tagged somewhere else)</i></li>"); 
    $("h6.uiStreamHeadline:contains('were tagged in')").closest("li").html("<li><i style='color:#CCCCCC;margin-left:15px;'>Post Hidden (multiple friends tagged somewhere else)</i></li>"); 
    $("h6.uiStreamHeadline:contains('commented on her own')").closest("li").html("<li><i style='color:#CCCCCC;margin-left:15px;'>Post Hidden (someone commented on their own stuff)</i></li>"); 
    $("h6.uiStreamHeadline:contains('commented on his own')").closest("li").html("<li><i style='color:#CCCCCC;margin-left:15px;'>Post Hidden (someone commented on their own stuff)</i></li>"); 
    $("h6.uiStreamHeadline .wallArrowIcon").closest("li").html("<li><i style='color:#CCCCCC;margin-left:15px;'>Post Hidden (Wall-to-Wall post)</i></li>"); 
    $("h6.uiStreamHeadline:contains('commented on a')").closest("li").html("<li><i style='color:#CCCCCC;margin-left:15px;'>Post Hidden (people commenting on something i probably don't care about)</i></li>"); 

와 페이지가로드 될 때 그 대체합니다

여기 내 다른 "필터"의 일부입니다. 그러나 문제의 기능은 내가 상호 작용할 때까지 업데이트되지 않습니다. 예를 들어, 페이지의 이름이 "Funny-Pictures-For-Everyone"이면 마우스를 올려 놓고 Facebook의 작은 팝업이 나타나면 이름이 "다른 사람"으로 바뀝니다. 왜 페이지가로드 될 때 변경되지 않습니다 모르겠어요. 타이밍 문제인지 궁금해합니다.하지만 어떻게해야할지 모르겠습니다. 나머지는 왜 작동하는지 잘 모르겠습니다.

문제의 기능이 나머지 대부분과 약간 다릅니다. 나머지는 closest("li")을 사용하여 전체 게시물을 대체하며 문제가있는 사람은 선택중인 <a></a> 태그 내의 내부 HTML 또는 텍스트를 바꿀뿐입니다.

미리 도움을 청하십시오.

나는이 문제에 대한 작업 솔루션 것으로 보인다 무엇을 마련했습니다 I 때까지 브록 아담스는 아래에 언급 한 바와 같이

가의 ID 속성 내가 요소에 존재하지 않는 선택하려고했다 그것과 상호 작용한다. 그래서, 나는 페이지로드에있는 것을 발견해야만했다. 나는 내부의 HTML을 조사해 보았는데, 내가 선택한 요소 중 하나는 '클래스'속성을 가지고 있지 않은 유일한 요소였습니다.

$("h6.uiStreamHeadline:contains('shared') a:not([class])").html("someone else"); 

I < 3 JQuery와 XD

답변

1

문제는 페이스 북의 ID (및 기타의 무리를 지정하지 않는다는 것입니다 : 따라서, 난 그냥 잘 작동하는 것 같다 다음에 왔어요 당신이 그것 위에 마우스를 놓을 때까지 그 링크에 crud)!

해결책 : Facebook을 사용하지 마십시오! 이제까지! ... 어, 그 필터에 대해 다른 접근 방식을 시도해보십시오. 아마도 :

$("h6.uiStreamHeadline:contains('shared') > div.actorName > a").html("someone else"); 
+0

예. 나를 믿어 라, 나는 페이스 북을 오히려 사용하지 않을 것이다. 문제는, 빨지 않는 부분은 이메일과 문자 메시지로는 친구와 상호 작용할 수있는 좋은 일을하지 않는다는 것입니다. 어쨌든 'actorName'은 공유하는 페이지의 이름이 아닌 게시하는 사람의 이름이므로 예제가 작동하지 않습니다. 또한 일반적으로 H6 내부에는 DIV가 없으므로 대부분의 경우와 일치하지 않습니다. 그래도 내 선택기는 올바른 요소를 올바르게 선택합니다. 나는 왜 그것이 자동으로 업데이트되지 않는지 이해하지 못합니다. – vertigoelectric

+0

OH 기다려! 너는 내 질문에 대답했다. 네가 옳아. 이드를 지정하지 않았습니다. 그것이 그것을 발견하지 못하는 이유입니다.[name^= value] 부분은 상호 작용할 때까지 존재하지 않습니다. 내가해야 할 일은 그것을 선택하는 또 다른 방법을 찾는 것입니다. 너무 어려워서는 안됩니다. 고맙습니다. – vertigoelectric

+0

트리플 코멘트를 쓰게되어 죄송합니다. 솔루션을 포함하도록 내 질문을 편집했음을 알려 드렸습니다. 귀하의 게시물은 솔루션으로 안내하여 답변으로 받아 들였습니다. 감사. – vertigoelectric

관련 문제