0

私は、ウィンドウ文書内のテキストエリアがクリックされたとき(onfocus)にボタンを挿入する方法を見つけようとしていましたが、数週間は失敗しました。Chrome拡張機能:ページ内のonfocus div(テキスト/入力)にボタンを挿入するにはどうすればよいですか?特にFacebookのページで

この機能は、Grammarlyの拡張機能と同様です。 Grammarly's extension

事は、私はそれがONFOCUSまたはkeypressedあるとき近くまたはでテキストエリアのボタンを追加したい、です。その後、テキスト値を拡張子に戻すことができます。 コンテンツスクリプトでdivを検出する正しい方法は何ですか?

ボタンのコードは次のようである:私が欲しいもの

function appendBtn(){ 
    var btn = document.createElement("INPUT"); 
    btn.setAttribute("type", "button"); 
    btn.setAttribute("value", "button"); 
    document.body.appendChild(btn); 
} 

document.onclick = function() { 
    appendBtn(); 
} 

にではなく、身体の後に要素を追加する右のdivを見つけることである...それは常にページの下部に表示されています特にコメント欄の入力ボックスを対象とすることができないフェイスブックのページにあります。

私を助けてください!私は

答えて

0

はあなたの拡張機能のcontent scriptで(それfocusイベントとは異なりバブル)focusinイベントを使用して...今必死だ:

var btn = createButton(); 
document.addEventListener('focusin', onFocusIn); 

function onFocusIn(event) { 
    var el = event.target; 
    if (el.contentEditable || 
     el.matches('input, textarea') && el.type.match(/email|number|search|text|url/)) 
    { 
     appendButton(el); 
    } 
} 

function createButton() { 
    var btn = document.createElement('button'); 
    btn.textContent = 'Yay!'; 
    btn.onclick = function(event) { 
     btn.textContent += '!'; 
    }; 
    return btn; 
} 

function appendButton(textElement) { 
    textElement.parentElement.insertBefore(btn, textElement.nextElementSibling); 
} 
+0

それが動作します!!どうもありがとうございます!!ただし、フォーカスを合わせるたびに複製を続ける代わりに、ボタンを1回だけ追加できますか? –

+0

確かに、更新されたコードを見てください。 – wOxxOm

+0

大変ありがとうございます!あなたは私の命を救いました!今すぐ次のステップを開始できます! (涙が喜び〜) –

関連する問題