2016-08-21 2 views
1

(適切なコード例がなかった以前の投稿です)jQueryを使用してFacebookの 'New Message'ボタンをトリガーする方法は?

FacebookのフロントエンドUIとやりとりする方法を理解しようとしています。

私はあなたがhttps://www.facebook.com/であると認識したときにJavaScript/jQueryを実行するだけの単純なFirefoxアドオンを作成しています - 私がFacebookを利用したときに自分自身を生産的に保ち、

しかし、とにかく、チャットのサイドバーの右下にある「新しいメッセージ」ボタンを選択するだけです。イベント、フォーカス、クリック、キー入力 'Enter'、そのボタンのhrefへの移動など - これまでのところできました。それは文字通り、新しいメッセージボックスを開きたいだけで、私のアドオンは完了します。しかし、何らかの理由で、FacebookのUIがどんな黒い魔法をやっているのかは分かりません。

誰に何をすべきか考えていますか?次

は、私は私のスクリプトで試してみたものの例です:要素に焦点を当てた後にクリックしようとすると

:HREFにウィンドウの位置を設定する

$('[data-tooltip-content="New Message"]').focus(); 
$('[data-tooltip-content="New Message"]').trigger('click'); 

- やったことのすべてを私は要素に焦点を当てた後、「入力」を押すようにそれが見えるようにしようと

var href = $('[data-tooltip-content="New Message"]').attr('href'); 
window.location.href = href; 

:URLに「#」を追加しました

両方の 'クリック' と '入力' をミキシング10
$('[data-tooltip-content="New Message"]').focus(); 
var f = jQuery.Event("keypress"); 
f.which = 13; 
f.keyCode = 13; 
$('[data-tooltip-content="New Message"]').trigger(f); 

はアプローチ:

$('[data-tooltip-content="New Message"]').focus(); 
$('[data-tooltip-content="New Message"]').trigger('click'); 
var f = jQuery.Event("keypress"); 
f.which = 13; 
f.keyCode = 13; 
$('[data-tooltip-content="New Message"]').trigger(f); 

$('a#js_g')のような私にも使用される識別子をFirebugで検査した後。

以前、チャットの検索ボックスで実際に検索したメッセージボックスを開こうとすると、もっと複雑な方法で、強調表示された個人を選択してクリックする前に結果が表示されるのを待っていました)を結果に追加します。問題は、検索ボックスが自分の入力を「natural user input」と入力したことがないため、入力ボックスの値を変更してもkeyup()イベントでも関連する結果が検索されなかったことです2秒間、入力ボックスの値がただちにクリアされました。

var searchChat = "something to search"; 
$('input._58al').focus(); 
$('input._58al').val(searchChat).keyup(); 
var e = jQuery.Event("keypress"); 
e.which = 13; //choose the one you want 
e.keyCode = 13; 
$("input._58al").trigger(e); 
$('input._58al').focus(); 
$("input._58al").trigger(e); 

//I set a timeout here, by encapsulating the following in a function, to wait for the results to show up 

var header = $('div._225b').text(); 
var listItems = $('ul#js_3 li'); 
var selected = false 
listItems.each(function(index, li) {//Basically, go down all the list of items and see if any of them are auto-selected; we just open that one, as facebook's default choice 
    if ($(li).attr("aria-selected")) { 
     $(li).trigger('click'); 
     selected=true; 
    } 
}); 

私はそれが私のFirefoxのコンテンツのスクリプトがブロックされた状態で、クロスオリジンの問題だったかもしれないことをどこかで読ん:

それはこのような何かを行ってきましたか?しかし、私のパッケージのように権限を変更した後でさえ。あなたはFacebookのページにjQueryを使用することはできませんように

"permissions": { 
    "cross-domain-content": ["https://www.facebook.com/"] 
} 
+1

この問題に関して元のものよりはるかに良い質問を書く努力をしていただきありがとうございます。別の時に、元の質問に対処する「正しい」方法は、それを編集することでした。あなたが持っていれば(つまり、そのコンテンツに編集されていれば)、私は投票を終了し、投票を削除し、より多くの情報を求めるいくつかのコメントを削除しました。私はおそらく(私がここにあるように)投票するだろう。一方、多くの人々は、特に人気のあるタグの新しい質問フィードを見ています。その初期ラッシュの良質な質問は、より良いレスポンスをもたらします。 – Makyen

答えて

1

が見えるので、あなたはバニラJS

document.querySelectorAll('[data-tooltip-content="New Message"]')[0].click()

https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll


理由を使用する必要があります:JSON、何も起こりませんでしたjQueryはここで説明したFacebookページでは機能しません。 https://stackoverflow.com/a/20286152/5811984

+0

ああ私の神私はそれが働いたとは信じられない!ありがとう! –

+0

どうしてFacebookはjQueryを許可していないのですか? –

+0

@vawd_gandi私は答えをより詳細に更新しました。 – Minderov

関連する問題