2011-08-04 16 views
1

私はChat.openTabが具体的に定義されていないので、私はJavaScriptでコードを実行したときので、それは、と思い、私は自動的に特定のチャットタブを開くでしょうGoogle Chromeのユーザースクリプトを書いていたが、それは働いていない、なぜこのユーザースクリプトはFacebookで動作しませんか?

それはうまく動作するコンソール。

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. Facebookは多くの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機能がすぐに利用できない可能性があるという事実があります。 Facebookアカウント(¤Groan¤)を作成して、サイト固有の問題があるかどうかを確認してください。 ...少し前に戻って... –

+0

javascriptコンソールは、<><! – Icallitvera

3
if (domain = face) 

if (domain === face) 
+1

はあなたに優しい先生に感謝していないが、FacebookのがロードされたときにJavaScriptコンソールは、まだ次のエラーメッセージを与える:キャッチされない例外TypeError:することはできません設定されたプロパティはnull キャッチされないにReferenceErrorの「価値」:チャットが 捕捉されない例外TypeErrorが定義されていません。ヌル キャッチされないにReferenceErrorのプロパティ「値」を設定することはできません:チャットが – Icallitvera

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

ない

if (domain = face) 
{ 
Chat.openTab("sam.sebastian1", "Seb") 
} 
関連する問題