×
[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系からこれに従ったため、メッセージが出るようになったと思われます。
chromeはver56系からこれに従ったため、メッセージが出るようになったと思われます。
以前から、このテクニックは裏技っぽい使い方だな、と思っていましたが、
実際にブラウザハックだったということになりますね!
正式な仕様としてはNGということになります。
普段何気なく使っているHTMLですが、
不具合を出してお客さんに迷惑をかけたり、恥ずかしい思いをしないためにも
一度くらいは通しで規約を読んだほうが良さそうですね。
参考URL
PR
この記事にコメントする
カレンダー
最新記事
(05/29)
(04/24)
(04/24)
(02/07)
(07/26)