2011-08-04 7 views
1

내가 자동으로 특정 채팅 탭을 열 것입니다 구글 크롬에 대한 사용자 스크립트를 작성했지만, 그것이 작동하지 않는,왜이 사용자 스크립트가 Facebook에서 작동하지 않습니까?

은 내가 Chat.openTab 특별히 정의되지 않기 때문에 내가 자바 스크립트 코드를 실행하면 있기 때문에이라고 생각 그것을 잘 작동 콘솔.

CODE :

var face = "facebook.com" 
var domain = document.domain 
if (domain = face) 
{ 
Chat.openTab("sam.sebastian1", "Seb") 
} 
+2

비교가'=='는 없습니다'=' – zerkms

답변

2

다른 답변 지적 (domain == face)이어야하며이 입니다.

그러나 예상 한대로 스크립트가 작동하지 않는 것은 아닙니다.

주요 문제는 Chrome userscript가 대상 페이지에 정의 된 JS를 사용할 수 없다는 것입니다. 당신은 너무 같은 페이지에 코드를 삽입해야합니다

function functionToInject() { 
    function myCode() { 
     /*--- This is where you put everything you want to do that 
      requires use of the page's javascript. 
     */ 
     var face = "facebook.com" 
     var domain = document.domain 
     if (domain == face) 
     { 
      Chat.openTab ("sam.sebastian1", "Seb"); 
     } 
    } 
    myCode(); 
} 

function addJS_Node (text, s_URL) { 
    var scriptNode      = document.createElement ('script'); 
    scriptNode.type      = "text/javascript"; 
    if (text) scriptNode.textContent = text; 
    if (s_URL) scriptNode.src   = s_URL; 

    var targ = document.getElementsByTagName('head')[0] 
       || document.body || document.documentElement; 
    targ.appendChild (scriptNode); 
} 

addJS_Node ('(' + functionToInject.toString() + ')()'); 


하는 기본적인 대답했다. 그러나은 Facebook이기 때문에 상황이 좀 더 복잡합니다.

  1. 페이스 북은 많은 iFrames를로드하며 스크립트는 많은 스크립트를 트리거합니다.
  2. Chat 개체가 바로로드되지 않습니다.

리소스를 찾을 때까지 타이머를 설정합니다.이 타이머는 리소스를 찾을 때까지 코드를 실행하지 않습니다.

과 같이 : JS에서

function functionToInject() { 
    function myCode() { 
     /*--- This is where you put everything you want to do that 
      requires use of the page's javascript. 
     */ 
     var face = "facebook.com" 
     var domain = document.domain 
     if (domain == face) 
     { 
      Chat.openTab ("sam.sebastian1", "Seb"); 
     } 
    } 

    var waitForKeyElements = setInterval (checkForElement, 500); 

    function checkForElement() { 
     if (typeof Chat != "undefined") { 
      clearInterval (waitForKeyElements); 
      myCode(); 
     } 
    } 
} 

function addJS_Node (text, s_URL) { 
    var scriptNode      = document.createElement ('script'); 
    scriptNode.type      = "text/javascript"; 
    if (text) scriptNode.textContent = text; 
    if (s_URL) scriptNode.src   = s_URL; 

    var targ = document.getElementsByTagName('head')[0] 
       || document.body || document.documentElement; 
    targ.appendChild (scriptNode); 
} 

addJS_Node ('(' + functionToInject.toString() + ')()'); 
+0

이 코드는 매우 바보 같지만 무엇을 바꿔야합니까? 뭐라해도? – Icallitvera

+0

Facebook에서 이것을 사용하고 있기 때문에 바보가 아닙니다. iFrames와 JS 기능을 즉시 사용할 수 없다는 사실을 고려해야합니다. 페이스 북 계정 (¤ 그란 ¤)을 만들고 여기에 사이트 별 잡화가 있는지 확인하겠습니다. ... 몇 가지로 돌아 가기 ... –

+0

자바 스크립트 콘솔에서 <> Icallitvera

3
if (domain = face) 

if (domain === face) 
+1

당신에게 어떤 선생님 감사하지만 페이스 북이로드 될 때 자바 스크립트 콘솔은 여전히 ​​다음과 같은 오류 메시지를 제공합니다 : catch되지 않은 형식 오류를 : 수 없다 null 값의 속성 'value'설정 잡히지 않은 ReferenceError : 채팅이 정의되지 않았습니다. 잡히지 않은 TypeError : null의 속성 'value'을 설정할 수 없습니다. 잡히지 않은 ReferenceError : 채팅이 정의되지 않았습니다. – Icallitvera

1
if (domain == face) 
{ 
Chat.openTab("sam.sebastian1", "Seb") 
} 

해야하지

if (domain = face) 
{ 
Chat.openTab("sam.sebastian1", "Seb") 
} 
관련 문제