IE に表示した Flash でリファラが取れない問題の回避方法

IE 6/7 に表示された Flash で navigateToURL を呼ぶとリファラが取れない (document.referrer === "" //true) 問題の回避方法。

アンカーエレメントをクリックしたことにする

アンカーエレメントを作って click イベントを呼べば、リファラを取ることができる。

ActionScript

ExternalInterface.call("navigateToURL", "hoge.html");

JavaScript

IE ではアンカーエレメントを生成し、IE 以外では location.href を書き換える。

function navigateToURL(url) {
if (!!document.all) {
var body = document.getElementsByTagName("body")[0];
var dummyLink = document.createElement("a");
dummyLink.href = url;
body.appendChild(dummyLink);
dummyLink.click();
body.removeChild(dummyLink);
} else {
location.href = url;
}
}