2016-10-07 6 views
1

を有していないフォームを傍受しましたこのようなハイジャック)、フォームの "をonSubmit" イベント:JavascriptををonSubmit、このように見える(クローム53)FORM要素記載なしリターン値

<script> 
    (function() { 
     var f = document.forms[0]; 
     var originalSubmit = f.onsubmit; 
     let result = "result init"; 
     f.onsubmit = function (e) { 
      e.preventDefault(); 
      console.log("Intercepted"); 
      result = originalSubmit.apply(f, [e]); 
      console.log("user submit result", result); 
      return true; 
     }; 
    })(); 
</script> 

変数result常にundefinedです。すべてのコンソールの結果は、そうでなければ期待されるものです。

私はそれがスコープ/「これ」と関係があるとはかなり確信していますが、頭が傷ついた後は私はそれを見ることができません。コンソールから

大幅

答えて

2

:-)感謝すべてのヘルプ私はChromeであなたのコードをテストし、それがうまく働いた...

<!DOCTYPE html> 
<html> 
<body> 
<form name="testForm" onsubmit="return onSubmit(event);"> 
    <p>Test OnSubmit Hijack</p> 
    <input type="Submit" value="Submit" /> 
</form> 
<script type="text/javascript"> 
    function onSubmit(e) { 
     console.log("onSubmit Event", e) 
     return false; 
    } 
</script> 
<script> 
(function() { 
    var f = document.forms[0]; 
    var originalSubmit = f.onsubmit; 
    let result = "result init"; 
    f.onsubmit = function (e) { 
     e.preventDefault(); 
     console.log("Intercepted"); 
     result = originalSubmit.apply(f, [e]); 
     console.log("user submit result", result); 
     return true; 
    }; 
})(); 
</script> 
</body> 
</html> 

出力:

Intercepted 
test.html:10 onSubmit Event Event {isTrusted: true, type: "submit", target: form, currentTarget: form, eventPhase: 2…} 
test.html:23 user submit result false 
+0

私は正しかったトラックに私を入れてください。もちろん、私は愚かな間違いを見つけました:-) – Serexx

0

結果変数ではありません未定義。あなたのonSubmit(e)関数から値を返します。あなたが本当を返すならば、あなたは真実を見つけるでしょう、またはあなたが何か他のもの(文字列または数字)を返すなら、あなたはそれを結果から得るでしょう。

+0

それは私が期待していたものですが、周囲のコードの間違いです(私は愚かに投稿しませんでした)犯人だった。 – Serexx

関連する問題