0

" Facebookの実際のデスクトップ版のように、input/textareaというタグ要素はなく、反応して作られていることに注意してください。クローム拡張(自動「ユーザーに聞いている...」)

私は適切に民間のFacebookクローンの入力中のテキストを置き換えるにこだわっている、私はそこにそれを見ることができますが、私はEnterキーを押したときに、それは送信されません。現時点では何が起こるかの

スクリーンキャスト: https://vimeo.com/203014549

このプライベートFacebookのクローンが正確チャットに関してはフェイスブックの実際のデスクトップバージョンのように動作します。

content.js:

$(function() { 
     if (window.jQuery) { 

     $('body').append("<div class='facemusic_tip' style='position:fixed;min-width:400px;width:400px;min-height:20px;height:20px;overflow:scroll;background-color:#000000;top:0;left:0;padding:10px;z-index:99999;color:white'>Press ´ in your message input to inject current song</div>"); 

     function findAncestor(el, cls) { 
      while ((el = el.parentElement) && !el.classList.contains(cls)); 
      return el; 
     } 

     $(document).on("keydown", function(e) { 
       if(e.which === 229){ 
        var currentmusic = getCurrentMusicAsString(); 
        keytarget = findAncestor(e.target, 'fbNubFlyoutOuter'); 
        var $chatbox_outer = $(keytarget); 
        $chatbox_outer.parent('.fbDockChatTabFlyout.uiContextualLayerParent').find("._5rpu").html("I'm listening to: "+currentmusic); 
       } 
     });  
     };   
}); 

UPDATE:
それにするだけで、手動のキーストロークが移入文字に置き換えて、私の取得し、それを入力しているので、私はかなり理解していないという反応について何かのようです入力フィールドの操作されたバージョンはなくなりました。バグのビデオを見てください。

+0

を私が持っている、について何かのようですがそれを反応させます私はかなり理解していません。なぜなら、入力時には手動のキーストロークによって入力された文字と置き換えられ、入力フィールドの私の操作されたバージョンはなくなりました。 – Jessica

+0

なぜ '$()'を呼び出した後にjQuery *の存在をテストしますか? jQueryが存在するかどうかを確認するためにテストする場合は、使用した後ではなく*使用する前に*チェックする必要があります。あなたは[IIFE](https://en.wikipedia.org/wiki/Immediately-invoked_function_expression)を使用しようとしているようです。そうであれば、一般的に '(function(){...})();'または '(function(){...}());'のようになります。言い換えれば、 '$'がなくても、関数式の後に関数呼び出し '()'があります。 – Makyen

+0

@Makyenコメントありがとうございました:)私の拡張機能のユーザーエクスペリエンスには影響しません。 jQueryが適切に利用できなかった場合、それがuserinput divのテキストを置き換えていない場合でも、何が起こったのかをビデオで見てください。 – Jessica

答えて

0

._5rpu要素は、あなただけの新しいHTMLで置き換えることにより、その内容をハァハァすることはできませんので、内部補助の必要な要素を持つのcontentEditableです。

使用document.execCommand代わり:あなたが非アクティブ入力エリアにテキストを挿入したい場合には

document.execCommand('insertText', false, 'blablabla'); 

、それを最初に焦点を当てる:

document.querySelector(
    '#feedx_container textarea, ' + 
    '#feedx_container [contenteditable="true"]' 
).focus(); 
+0

ありがとう:)それはトリックを行います:) – Jessica

関連する問題