iOSのLINEの内臓ブラウザが、POSTフォームのtarget=_blankで挙動が狂う件
概要
iOSのLINEブラウザの挙動がおかしくてはまりました。
現象
環境:iOSのLINEとYahooの内臓ブラウザ(ほかにもあるかもしれない。)
条件:POSTメソッドのformタグで、target="_blank"が指定されている
結果:formのaction先には遷移するが、formのパラメータはすべて抜け落ちる
再現
1. コード
html01.html
<html>
<head>
<meta charset="UTF-8" />
<style type="text/css">
div {
border: 1px solid black;
margin-top:10px;
}
</style>
</head>
<body>
<div>
targetなしPOSTフォーム
<form action="./php01.php" method="POST">
<input name="name" type="text" value="kumanobori" />
<input name="type" type="text" value="kuma" />
<input type="submit" />
</form>
</div>
<div>
targetありPOSTフォーム
<form action="./php01.php" method="POST" target="_blank">
<input name="name" type="text" value="kumanobori" />
<input name="type" type="text" value="kuma" />
<input type="submit" />
</form>
</div>
</body>
</html>
php01.php
<?php
echo 'REQUEST_URI: ' . $_SERVER['REQUEST_URI'] . '<br />';
echo 'POST:' . mb_ereg_replace("\r|\n", '', print_r($_POST, true)) . '<br />';
2. html表示
<html>
<head>
<meta charset="UTF-8" />
<style type="text/css">
div {
border: 1px solid black;
margin-top:10px;
}
</style>
</head>
<body>
<div>
targetなしPOSTフォーム
<form action="./php01.php" method="POST">
<input name="name" type="text" value="kumanobori" />
<input name="type" type="text" value="kuma" />
<input type="submit" />
</form>
</div>
<div>
targetありPOSTフォーム
<form action="./php01.php" method="POST" target="_blank">
<input name="name" type="text" value="kumanobori" />
<input name="type" type="text" value="kuma" />
<input type="submit" />
</form>
</div>
</body>
</html>
<?php
echo 'REQUEST_URI: ' . $_SERVER['REQUEST_URI'] . '<br />';
echo 'POST:' . mb_ereg_replace("\r|\n", '', print_r($_POST, true)) . '<br />';
3. 正常な結果(iOSのLine内臓ブラウザのtargetありの場合以外)
4. 異常な結果(iOSのLine内臓ブラウザのtargetありの場合)
回避策
User-Agentで判定して、 target="_blank"
の出力有無を制御しました。
その他
試した環境(以下は全部セーフ)
iOS slack内臓
iOS chrome
iOS Safari
android Yahoo内臓
android LINE内臓
android chrome
上記コード以外で試した条件(以下は全部セーフ)
GETメソッドのformの target="_blank"
aタグの target="_blank"
ポエム
LINEブラウザの挙動がおかしいってことで調査したのですが、こんな使い古したオプションで挙動が狂うとは思わず、思い切りはまりました。。。
2021.09.10 追記
スマホのLINE内臓ブラウザだと「新しいウィンドウ」という概念がないわけで、そこに事情があるんだろうなという気はしなくもないです。
でもandroid版はちゃんとしてるしー。(新しいウィンドウは開かないけど、ちゃんと遷移する)
で、Yahooアプリに至っては内臓ブラウザがマルチタブ対応してるからそこに事情を斟酌する余地すらないしー。
Author And Source
この問題について(iOSのLINEの内臓ブラウザが、POSTフォームのtarget=_blankで挙動が狂う件), 我々は、より多くの情報をここで見つけました https://qiita.com/kumanobori/items/9cb3a3797c205dc2bfca著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .