Safariのの問題-最初のクリックのみが_blankターゲットにPOSTします

forms php post safari
Safariの<form>の問題-最初のクリックのみが_blankターゲットにPOSTします

PHPを使用して、ボタンとして画像を添付し、非表示の値を_blankターゲットにPOSTする10個のフォームをページに生成しています。 これはFirefoxでも問題なく機能し、10個のボタンすべてが新しいウィンドウに送信および投稿されます。 ただし、Safariでは、ボタン(フォーム)のいずれも新しいウィンドウに送信およびPOSTしません(!!!) どうしたの??)

コードはここにあります-

$id=getId();
echo "";

ここで奇妙なことはありません-idは実際にここに表示するために簡略化した私のデータベース内の曲のidです-しかし、これが問題を引き起こしている場合に備えてフォーム名の最後にそれを含めました。

要約すると、1ページに10個の[今すぐ購入]ボタンが表示されます。これらはすべて、PHPスクリプトに投稿する必要があります。 スクリプトは正常に動作します。 ただし、サファリでは、[今すぐ購入]ボタンを押すと、他のすべてのボタンが機能しなくなります(ページを更新するまで)

どうしてこれなの?

  • これがボタン用に生成される最終的なhtmlです

I have just tried copying this to a new html file and testing and the
same thing happens - the first click will open a new window but no
buttons after that will post the form

  4  2


ベストアンサー

次のコードを使用したクイックチェックは正常に機能します(MacのSafari 5)

for($id = 1; $id < 11; $id++) {
   echo "


   ";
}

あなたの `$ id`かもしれません。 htmlを生成し、ペッカが提案したように表示します

編集 safari-windows-landで何がうまくいかないかはわかりませんが、次のようにコードを変更し、VM(Win XP、Safari5)でテストしました。

for($id = 1; $id < 11; $id++) {
   echo "


   ";
}

すべてのフォームはその「ユニークな」アクションターゲット `?$ id`を取得し、このシームがトリックを実行します

*編集*リンクとファイルの削除

6


最初の推測: `_blank`は特別な値として扱われるのではなく、同じウィンドウとして扱われるため、最初の投稿は新しいウィンドウに移動し、後続の投稿は最初のウィンドウに移動(試行)します。

各ボタンに一意のターゲットが設定されるように、各ボタンに「blank $ i」などのターゲットを指定してみます。

2


これは、ページに使用しているDoctypeによるものなのでしょうか。 ターゲット属性は非推奨であり、XHTML Transitional、XHTML Frameset、またはHTML 4でのみ使用可能です。 XHTML Strictを使用していますか? おそらく暗闇の中でのショットのように見えますが、それはこの奇妙さを引き起こすでしょう…​

2


Javascriptでこれを行う方法があります。 フォーム要素にこのコードを追加してみてください:

>

フォームごとに一意の名前のウィンドウが必要であり、ターゲットでそのウィンドウを参照する必要があることは明らかです。 これもかなり劣化するはずです。 Javascriptが利用できない場合は、PC上のSafariでの問題により、現在のコードと同じように動作するはずです。 そのブラウザを使用しているユーザーの数に応じて、これは受け入れられる場合と受け入れられない場合があります。

1


タイトルとURLをコピーしました