function setCookie(){
if (navigator.userAgent.indexOf('Safari') != -1 &&
navigator.userAgent.indexOf('Chrome') == -1){
window.open('safari.php','','width=200,height=100');
}
}
// then we set the cookie in safari.php
Źródło: http://www.reizbombardement.de/archives/safari-5-1-4-enforces-cookie-policy
// UPDATE 23 lipca 2013
To brzydko sposób ustalania tego problemu pracował aż Safari 6.
proszę zobaczyć @Fabio Antunes i @ncubica komentarze poniżej.
// UPDATE 23 lipca 2013 przez Fabio Antunes
Oto mój kod
na stronie docelowej będziemy mieli krótki opis aplikacji oraz przycisk mówiąc coś w stylu „enter”. Używam jquery, aby uprościć ten proces, tworząc detektor zdarzenia kliknięcia, po prostu wstawię kod javascript, ponieważ zakładam, że masz już resztę kodu HTML strony docelowej:
$(document).on("click", "#bt-landing", function(){
var left = (screen.width/2)-(500/2);
var top = (screen.height/2)-(250/2);
window.open('URL_FOR_THE_PHP_THAT_WILL_CREATE_THE_SESSION', '_blank', 'width=500,height=250,toolbar=0,location=0,menubar=0, top='+top+', left='+left);
});
To otworzy małe okno o wymiarach 500 na 250 pikseli, wyśrodkowane na ekranie.
Kod mam na małym oknie to:
<?php setcookie("safari_cookie", "1");?>
<html>
<head>
<meta charset="utf-8">
<title>THE NAME OF YOUR APP OR SOMETHING THAT THE USER WE'LL READ AND ASSUME THAT THIS SMALL WINDOW IS RELIABLE</title>
</head>
<body>
<script type="text/javascript">
$(document).ready(function(){
setTimeout(function(){window.close()},1000);
})
</script>
</body>
</html
Właśnie ustawiłem ustawienie Blokuj pliki cookie innych firm (Win7 Safari) i SharedObject nie działa tak, jak powinno. Wkrótce dostanę ślady i zaktualizuję ten wpis. –
Interesujące ... to ustawienie nie jest domyślne, ale prawda? Inną rzeczą, która blokuje dostęp do udostępnionego obiektu, jest przeglądanie "prywatne" lub "incognito" (gdzie przeglądarka przechowuje pliki cookie tylko dla tej konkretnej sesji). Chrome ma do tego opcję. –
Powinienem to sprawdzić we własnej przeglądarce (Safari 5.1.7, Mac): w Preferencjach, na karcie Prywatność, ustawienie "Zablokuj pliki cookie" jest ustawione tak, aby blokować pliki cookie "od firm zewnętrznych i reklamodawców". Jest to wartość domyślna (nie sądzę, że kiedykolwiek ją zmieniłem). Ale w moim przypadku dostęp do SharedObject działa dobrze po zablokowaniu plików cookie innych firm. –