アンロード時に Ajax リクエスト、JSONP リクエスト、さらには window.name リクエストを送信しようとすると、Safari と Chrome はコードを実行しますが、サーバーはそのリクエストを認識しません。私の理論では、実行スレッドは、スクリプト タグがページを変更する前に実行されることは決してありません。これは、JSONP テストを含むテスト ページです。このコード (および Ajax と window.name) は、Firefox と IE7 で test.html のリクエストを作成しますが、Safari では作成しません。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
</head>
<body>
<script language="javascript" type="text/javascript">
window.onunload = function(){
var encode = "UTF-8";
var script = document.createElement('script');
script.type = 'text/javascript';
script.src= "/test.html";
script.charset= encode;
document.body.appendChild(script)
}
</script>
</body>
</html>
これを回避する良い方法を知っている人はいますか?より具体的には、アンロード時に Safari に強制的にリクエストを送信させる方法を知っている人はいますか? 私が見つけた唯一の解決策 (私の場合はあまり役に立ちません) は、同期 XHR です。