lostyazilim
tr.link

iframe ve js.onblur onfocus sorunu yardımcı olur musunuz?

8 Mesajlar 1.330 Okunma
lstbozum
tr.link

brainstorm brainstorm WM Aracı Kullanıcı
  • Üyelik 13.12.2019
  • Yaş/Cinsiyet 36 / E
  • Meslek freelancer
  • Konum Ankara
  • Ad Soyad M** Ç**
  • Mesajlar 15
  • Beğeniler 2 / 1
  • Ticaret 0, (%0)
merhaba arkadaşlar
web sayfamda .onblur ve onfocus javascript kodlarını kullanıyorum.

Kullanıcı, sayfamı kapatmadan başka sekme açarsa , otomatik geri sayım yaptırıp kapatmadığı sayfayı, ana sayfaya yönlendiriyorum.

Buraya kadar sorun yok her şey güzel çalışıyor.

Fakat sayfanın bir kısmına iframe gömülmüş ise ve kullanıcı iframe alanında işlem yapıyorsa bu onblur devreye giriyor.Sanki farklı sekme açmış gibi geri sayımı başlatıyor.
Buna bir çözüm var mı? Sayfa içerisindeki iframe alanında yer alan sayfada aynı domain.ama pencere kontrolu olduğu için sanki başka pencere açılmış gibi yapıyor.

Yardım eder misiniz?
 

 

wmaraci
reklam

dnaz dnaz Back to Front End Kullanıcı
  • Üyelik 02.06.2016
  • Yaş/Cinsiyet 41 / E
  • Meslek Software
  • Konum Adana
  • Ad Soyad K** A**
  • Mesajlar 704
  • Beğeniler 101 / 147
  • Ticaret 34, (%100)
Window kontrolünde iframe hariç olarak belirlersen olmaz. Kod görmeden fazla yardım edemem. Yada iframe in focus ve blur özelliğine yeni işlem tanimlamalisin.
brainstorm

kişi bu mesajı beğendi.

brainstorm brainstorm WM Aracı Kullanıcı
  • Üyelik 13.12.2019
  • Yaş/Cinsiyet 36 / E
  • Meslek freelancer
  • Konum Ankara
  • Ad Soyad M** Ç**
  • Mesajlar 15
  • Beğeniler 2 / 1
  • Ticaret 0, (%0)
window kontrolunde iframe nasıl hariç tutacağım?
iframe kodum standart. olarak kullandım

kullandığım javascript kodu

var after_title = 'Sayfaya geri dönün!';
var dafault_title = document.title;

window.function () { document.title = after_title; saniyeBaslat(); }
window.function () { document.title = dafault_title;saniyeDurdur(); }

function beep() {
var snd = new Audio("data:audio/wav;base64,//uQAAAAACU=");
snd.play();
}

var deger;
var saniye=5;
function saniyeDurdur()
{ saniye=5;
window.clearTimeout(deger);
}
function saniyeBaslat()
{
if(saniye >0){
saniye --;
beep();
deger=window.setTimeout('saniyeBaslat()',1000);
}else{
window.clearTimeout(deger);
location.href = './index.php';
}
}
 

 

dnaz dnaz Back to Front End Kullanıcı
  • Üyelik 02.06.2016
  • Yaş/Cinsiyet 41 / E
  • Meslek Software
  • Konum Adana
  • Ad Soyad K** A**
  • Mesajlar 704
  • Beğeniler 101 / 147
  • Ticaret 34, (%100)
Kodlarını inceledim. Çözüm, focus yada blur kontrolünü window olarak değil de, iframe ide içine alacak şekilde document şeklinde almak olacaktır.


Aşağıdaki kodlar işini görecektir. Saniye olan kısmını dilediğin şekilde değiştirebilirsin.

var after_title = 'Sayfaya geri dönün!';
var dafault_title = document.title;
var deg;
window.function () { document.title = after_title; beep(); deg=setTimeout(kontrol,10000); }
window.()=>(deg)?clearTimeout(deg):null;

function beep() {
var snd = new Audio("data:audio/wav;base64,//uQAAAAACU=");
snd.play();
}

function kontrol()
{
if(document.hasFocus()){
return;
}else{
location.href = './index.php';
}
}
brainstorm

kişi bu mesajı beğendi.

wmaraci
wmaraci

brainstorm brainstorm WM Aracı Kullanıcı
  • Üyelik 13.12.2019
  • Yaş/Cinsiyet 36 / E
  • Meslek freelancer
  • Konum Ankara
  • Ad Soyad M** Ç**
  • Mesajlar 15
  • Beğeniler 2 / 1
  • Ticaret 0, (%0)
Teşekkür ederim. Kontrol edip yazacağım tekrar
 

 

brainstorm brainstorm WM Aracı Kullanıcı
  • Üyelik 13.12.2019
  • Yaş/Cinsiyet 36 / E
  • Meslek freelancer
  • Konum Ankara
  • Ad Soyad M** Ç**
  • Mesajlar 15
  • Beğeniler 2 / 1
  • Ticaret 0, (%0)
üstat bunu yaptım ama bu sefer şöyle bir sorun var.
iframe içinde tıklama yapıldıktan sonra geri sayım işlemi tamamen duruyor, title değişmiyor. en önemlisi kullanıcı yeni sekme açsada geri sayım çalışmıyor

benim istediğim ise sekme içinde iframe olsun olmasın hiç bir şekilde geri sayım çalışmayacak, eğer kullanıcı yeni sekme açarsa geri sayım çalışacak.

javascriptte yeniyim kusara bakma,"iframe ide içine alacak şekilde document şeklinde almak " derken ne yapacağımı anlayamadım.
 

 

brainstorm brainstorm WM Aracı Kullanıcı
  • Üyelik 13.12.2019
  • Yaş/Cinsiyet 36 / E
  • Meslek freelancer
  • Konum Ankara
  • Ad Soyad M** Ç**
  • Mesajlar 15
  • Beğeniler 2 / 1
  • Ticaret 0, (%0)
iframe içine tıklandığında başlık değişmeme sorunu çözdüm.Tek sıkıntı iframaye tıkladıktan sonra browserda sekme açılırsa onblur aktif olmuyor.

iframe dışına tıklandığında ve sonrasında browserda yeni sekme açılırsa onblur aktif oluyor ve title alanında yazı değişip yönlendirme için geri sayım başlıyor.
aklıma gelen basit soru hasFocus fonksiyonunun tersi var mı ?


function kontrol()
{
if(document.hasFocus()){
document.title = dafault_title;
return;
}else{
location.href = './index.php';
}
}
 

 

brainstorm brainstorm WM Aracı Kullanıcı
  • Üyelik 13.12.2019
  • Yaş/Cinsiyet 36 / E
  • Meslek freelancer
  • Konum Ankara
  • Ad Soyad M** Ç**
  • Mesajlar 15
  • Beğeniler 2 / 1
  • Ticaret 0, (%0)
Arkadaşlar soruna çözüm buldum.Daha sonra bu sorunla karşılaşacak olursa kullanabilirler.
Bu tarz sekme görünürlük kontrolu yapmak isterseniz Page Visibility API kullanılmalıymış. onblur değil
@Dnaz üstada da göstermiş olduğu yardımlardan yol göstericiliğinden dolayı teşekkür ederim


function handleVisibilityChange() {
if (document.hidden) { // equivalent to "blur"
document.title = after_title; beep(); deg=setTimeout(check,2000);
} else { // equivalent to "focus"
if (deg) {
clearTimeout(deg);
}
}
}

document.addEventListener("visibilitychange", handleVisibilityChange, false);
dnaz

kişi bu mesajı beğendi.

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al