SHIRANGANA Form submission canceled because the form is not connected 忍者ブログ
エンジニア日記
Admin / Write
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

最近から、ChromeにおいてjQueryでformをsubmit処理をするとき
Form submission canceled because the form is not connected
というメッセージがコンソールに出るようになり、submitができなくなることがあります。
 
これはChromeのバージョン55系までは出ておらず、56系から出るようになりました。
(発生した私の環境では56.0.2924.87 64-bitでした)
 
このエラーは、ブラウザが描画しているdocumentに埋め込まれていないformを
submitしようとするときに発生します。
 
端的に言うと下記のような感じ
$('<form action="hoge"></form>').submit(); // これは上記のメッセージが出る。
 
暫定の対応としては、
form要素をdocumentに一度埋め込むことによって動作するようになります。
 
たとえば
 
var form = $('<form action="hoge"></form>');
var temp_wrapper = $('div#temp');
 
temp_wrapper.empty().append(form);
form.submit(); // 正常にsubmitされる。
 
みたいな感じ。
 
理由は、HTMLの仕様がそうであるからでした。
 
上項の2番に書いてあるとおりで、documentに結合していない要素の処理は無視されます。
chromeはver56系からこれに従ったため、メッセージが出るようになったと思われます。
 
以前から、このテクニックは裏技っぽい使い方だな、と思っていましたが、
実際にブラウザハックだったということになりますね!
正式な仕様としてはNGということになります。
 
普段何気なく使っているHTMLですが、
不具合を出してお客さんに迷惑をかけたり、恥ずかしい思いをしないためにも
一度くらいは通しで規約を読んだほうが良さそうですね。
 
参考URL
PR
この記事にコメントする
Name :
Title :
Mail :
URL :
Color :   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
Comment :
Password :
HOME | 29  28  27  25  18  16  13  10  7 

忍者ブログ [PR]