Labs/libs/SWFAddress/Safari3での問題
Safari3Betaで、SWFAddress.setValue('hoge')を実行した際、隠しFORM { @action -> #hoge, @method -> get }をsubmitして、
履歴を追加するため、URLに?が付いていない場合、ファイル名の最後に?を追加され、HTMLはリフレッシュされ、SWFは振り出しに戻ります。
javascript:alert(asual.util.Browser.version)
ブラウザ | 結果 | 再現 | navigator.userAgent |
Safari3.0.3 | 522.12 | ● | Mozilla/5.0 (Macintosh; U; Intel Mac OS X; ja-jp) AppleWebKit/?522.11.1 (KHTML, like Gecko) Version/3.0.3 Safari/522.12.1 |
Shiira2.2 | 125 | ● | Mozilla/5.0 (Macintosh; U; Intel Mac OS X; ja-jp) AppleWebKit/?522.11.1 (KHTML, like Gecko) Shiira Safari/125 |
Safari3.0.3(Windows) | 522.15 | ● | Mozilla/5.0 (Windows; U; Windows NT 5.1; ja) AppleWebKit/?522.15.5 (KHTML, like Gecko) Version/3.0.3 Safari/522.15.5 |
それを回避するために、以下の記述をします。
以下はそれを回避するための方法のドラフトです。
var l = document.location.toString(); var b = asual.util.Browser; if(b.safari&&l.indexOf("?")==-1) document.location.href = l.indexOf("#")>=0 ? l.split("#").join("?#") : (l + "?"); else { var so = new SWFObject("hoge.swf", "hoge", "100%", "100%", 8, "#FFFFFF"); ・ ・ ・ so.write("flashcontent"); }
hoge.html#permalinkにアクセスした際、SWFを表示せず、hoge.html?#permalinkに強制的に遷移させます。