多くの研究によって、window.location
がiframeから設定されている場合、JavaScriptが次の場所を確認して2つのドメインを比較する方法がないという結論に至りました。
これは、iframeがサイトから壊れるのを防ぐために私が知っている唯一の方法です。まず、onbeforeunload
関数を通常どおりに機能させ、そのユーザーがあなたのサイトから離れることを警告します。次に - これは重要な部分です - ページの変更がonbeforeunloadイベントを引き起こさないように内部リンクにコードを追加します。
(function(){
window.onbeforeunload = function()
{
if(!/\bnagged=true\b/.test(document.cookie))
{
document.cookie = "nagged=true";
location.assign('http://www.mysite.com');
return "You are being redirected off our site!";
}
}
var lnk;
for(var i in document.links)
{
if((lnk = document.links[i]).href.indexOf(document.domain) > -1)
{
lnk.onclick = function()
{
window.onbeforeunload = null;
}
}
}
})();
:これは、ユーザーが
ドメインを残している場合
onbeforeunload
イベントはONLY発火することを意味します