2016-12-30 6 views
1

だから私はすべてを保存するスクリプトに取り組んでいる二人は(のWhatsAppウェブ上)のWhatsAppでオンラインだったjavascriptの変数の値を変更することはできませんし、私はこれがあります。は</p> <p>を

//add zeros (run only once) 
 
function addZero(i) { 
 
    if (i < 10) { 
 
    i = "0" + i; 
 
    } 
 
    return i; 
 
} 
 

 
//Inject jQuery (run only once) 
 
var jq = document.createElement('script'); 
 
jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"; 
 
document.getElementsByTagName('head')[0].appendChild(jq); 
 

 
// make online log 
 
//start 
 
var online = "yes"; 
 
var onlineCheck1 = window.setInterval(function() { 
 
    var x = $('#main>header>div.chat-body>div.chat-status>span').text() 
 
    var name = $('#main>header>div.chat-body>div.chat-main>.chat-title>span').text() 
 
    var d = new Date(); 
 
    if (x == "online") { 
 
    var online = "yes"; 
 
    console.log(d.toLocaleDateString('en-GB') + "|" + addZero(d.getHours()) + ":" + addZero(d.getMinutes()) + ":" + addZero(d.getSeconds()) + " " + name + " " + "was" + " " + "///online///"); 
 
    } else if (online == "yes") { 
 
    console.log("<------------>") 
 
    var online = "no"; 
 
    } else { 
 
    var online = "no"; 
 
    } 
 

 
}, 1000); //end

と誰かがオンラインであるが、私は人がオフラインであり、それはそれをやっていないとき、それはただ1つのマーク(< ------------>)を置きたいときには、ログインしています。

変数 "online"を "yes"の値にします
変数の "x"を変数の内部テキスト(オンラインまたは最後の値)にします見た.....)
そして、xがオンラインであるかどうかを調べる? "online"の値を "yes"に変更します。そうでなければ
の日付と時刻を記録し、変数 "online"の値が "yes"ならば? (< ------------>)を記録し、 "online"の値を "no"に変更します。
そうでない場合は?変数 "online"の値を "no"に変更して繰り返します。
何がうまくいかないのか分かりませんが、何らかの理由で変数が変更されていない可能性があります。

注:私はchromeのコンソールを使ってweb.whatsapp.comでこのスクリプトを実行していますので、私が何を意味しているか見たい場合は試してみてください。

+3

待機@mrrogers :)内で変更したい変数から「VAR」のキーワードを削除するようにしてください')を呼び出します。あなたは 'online'のグローバル宣言をオーバーライドしています。 – Pointy

+0

@Pointyええ、それは働いた、ありがとう –

答えて

2

まず、コードが多少汚れているように見えますが、関数はsetIntervalから外れています。

第2に、コードの先頭に挿入されたGoogleのJqueryスクリプトが停止し、$を呼び出しても定義されていない場合はどうなりますか?

次に、setTimeoutを使用して、setIntervalの代わりに再帰的に呼び出します。

あなたの変数は「オンライン」です。関数内では「var」を使用しているため、「var online」があなたのanon内に作成されます。外部の "var online"はあなたの操作の影響を受けません。あなたのanon内の "var"単語を削除してみてください。 setIntervalの関数です。

+0

私は自分のコードが "汚い"と私はチェックしていないとJqueryはサイトに注入されていないと私は実際にsetIntervalの代わりにsetTimeoutを使用する方法を知っていない知っている。私に喜ばせることができますか?論理 –

+0

と思われるソリューションをテストするつもりですが、うまくいきましたが、setIntervalの代わりにsetTimeoutを使用してそれを行う方法を教えてください。 –

+0

ええ、確かに。それは次のようになります。 最初の呼び出し:のsetTimeout(チェック、1000) VARチェック=関数c(){// は自分のものを行い、その後、 のsetTimeout(C、1000)。 } – curveball

1

はOPがオンライン ``ためvar`キーワードを(削除するには、IF-else文...あなたは正しかった

関連する問題