2017-07-02 23 views
0

非常にシンプルなフォームを持つChrome拡張機能を作成しています。フォームが送信されるたびにDOMContentLoadedが呼び出されます

<html> 
    <head> 
    <title>Getting Started Extension's Popup</title> 
    <script src="popup.js"></script> 
    </head> 
    <body> 
    <div id="status"></div> 
    <form id="typeForm"> 
     Type: <input id="typeInput" type="text" name="type"><br> 
     <input type="submit" value="Submit"> 
    </form> 
    </body> 
</html> 

そしてpopup.js以下があります。

document.addEventListener('DOMContentLoaded', function() { 
    document.getElementById('status').textContent = 'Enter Type'; 
    document.getElementById('typeForm').removeEventListener('submit', typeFormDidSubmit); 
    document.getElementById('typeForm').addEventListener('submit', typeFormDidSubmit); 
}); 

function typeFormDidSubmit() { 
    var type = document.getElementById('typeInput').textContent; 
    if (type && type.length > 0) { 
     document.getElementById('status').textContent = 'Processing...'; 
     startProcessing(); 
    } else { 
     document.getElementById('status').textContent = 'Type cannot be empty'; 
    } 
} 

今の問題は関係なく、私がフォームに入力する内容の、それはできるだけ早くtypeFormDidSubmitが呼び出されるように、空または他のいくつかの文字であることですDOMContentLoadedもトリガされ、ステータスメッセージが「Enter Type」に点滅します。私はDOMContentLoadedが1ページにつき1回しか呼び出されないと考えました。

ページが読み込まれたときに最初のコマンドセットを1回だけ呼び出すことはできますか?

+0

submit submitは、

属性で指定されたページをロードします - この属性のデフォルトは現在のページです - したがって、submitを押すと効果的にページを再読み込みします - submitの 'preventDefault'メソッド'イベント' –

+0

ありがとう@JaromandaX、それは私がローカルのJSスクリプトをトリガーしたいので、私が使うべきものではないようです。おそらくTextArea +ボタンを使うべきです。 – ykonda

答えて

0

@Jaromanda Xのコメントを読んで、送信フォームを読んだら、フォームはいくつかのデータでPOST要求に使用されているようです。 ローカルのJS関数を呼び出したいので、TextArea + Buttonを使うべきです。

+1

私たちは送信時にデフォルトを防ぐことができます。 – wOxxOm

関連する問題