Sayfa 1 yüklenmesi ve daha sonra da tekrar geri kaydırarak geri dönmek için tarayıcı yapmak

4 Cevap php

EXPLAINING WHAT I'M TRYING TO SOLVE:

Ben bir webpage (file_list.php) dosyasını siler ve sonra geri file_list.php gitmek için tarayıcı söyler dosyaları , and next to each file there is a button to delete it. When user press the DELETE button close to a certain file name, the browser goes to a script called delete_file.php listesini gösteren var

delete_file.php kullanan basit bir header("Location: file_list.php”); geri dönmek için file_list.php

When browser goes back to file_list.php it reloads the page, but it DOES NOT scroll it back again to where the user was before. So let's say the user scrolled the files list and deleted the last file, when the browser shows again the page file_list.php it won't be scrolled to the bottom of the page again.



THE WORKAROUND I CAME OUT WITH:

Bu geçici bir çözüm bulmak için garip bir yol bulundu, temelde instead of using header("Location: file_list.php”); in delete_file.php Ben sadece bir javascript çağrısı window.history.go(-1) kullanın.

This workaround works perfectly when user is in session (simply using PHP session_start function): the browser RELOADS the file_list.php page and then scrolls it also back to where it was before. But if the user is NOT in session the browser scrolls the page but IT DOES NOT RELOAD IT before, so the user would still see the file he deleted in the file list.



THE QUESTIONS

  1. Eğer tarayıcı davranışı yeniden nasıl biliyor musunuz biz oturumda olmasa bile geri oturumda olmak gider?

  2. Bu çıkış yolu, bu meseleyi çözme bile başka bir yol biliyor musunuz?

Teşekkürler!

* Ben delete_file.php her zaman gitmek olmazdı yani ben dosyayı silmek için AJAX kullanabilirsiniz biliyorum, ama bu cevap değil *.

4 Cevap

Sen çapa yayarlar olabilir:

<a name="anchor1"/>filename_this
<a name="anchor2"/>filename_that

filename_this, sen silme sayfa filename_this geçmek ve aynı zamanda anchor1 silmek için. Silme sayfası daha sonra file_list.php#anchor1 yönlendirir

Çapa isimleri dosya isimleri eşleme gerektiğini unutmayın. Eğer beşinci dosyayı silmek Bu şekilde, çapa (eski biri olarak kullanılan) "yeni" beşinci dosyası yakındır.

Nerede tarayıcılar genellikle hatırlıyorum. Eğer B sayfasına A giderseniz, o zaman (geri düğmesi ile) geri dönün, size sayfa A'da aynı yere varmak gerekir

Eğer header('location: A.php'); kullandığınızda, başka bir sayfaya forward gitmek için tarayıcı talimat vardır. Daha önce var olmamıştı, bu yüzden kaydırma konumu neydi bilemeyiz.

Eğer history.go(-1) kullandığınızda, size çözüm çalışır neden olan geri düğmesini tıklatın için tarayıcı talimat vardır. Muhtemelen tarayıcı sayfayı yeniden neden olan bir no-cache başlığı, yayan edilir. Burada etkisi sadece navigasyon (olmadan) sayfayı yeniden aynıdır. Bu birlikte sorun daha sonra kullanıcı "ileri" düğmesini tıklayın ve tekrar delete_file.php varmak (ve yanlışlıkla başka bir dosya silme sonunda olabilir) olmasıdır.

Bazı fikirler:

  • Sen sayfada (her dosya için bir) çapa bir sürü koyun, ve kullanıcı tıklandığında nerede en yakın çapa yönlendirebilirsiniz. Eğer dosyayı 4 silinmiş Yani, daha sonra 3 header('file_list.php#file3'); dosyasına yönlendirmek.
  • Javascript Geçerli kaydırma konumunu hesaplamak ve bir çerez saklamak. Sayfayı yeniden, sen nerede kaydırmak için javascript kullandığınızda (sadece bir kez bunu yapmak için emin olun, bu 3 gün sonra sayfasını ziyaret edin ve özel bir nedenle ortadan kaydırmak için kafa karıştırıcı olurdu).
  • Ayrıca arka planda dosyayı silmek için AJAX kullanabilirsiniz. Burada kaydırma ile tarayıcı anlaşma izin vardır. Bu aradığınız cevabı olmayabilir, ama kesinlikle bir çözüm.

Benim düşünceme göre, en iyi çözüm basit: senin sayfalarını kısa yapmak. Sayfalarınız kaydırmak için yeterince uzun değilse, o zaman sorun yok.

Nasıl bir IFRAME göndererek hakkında? (Tüm hiçbir JS? Sen ... silinen giriş gizlemek mümkün olmayacaktır)

Yani özetlemek için, senin adımlar şunlardır:

1) "dosyaların bir listesini gösteren bir web sayfası (file_list.php)"

2) "dosyasını siler ve sonra geri file_list.php gitmek için tarayıcı söyler delete_file.php"

Ben sadece Açıkçası sadece silinen dosyayı dahil olmaz dizinin mevcut içeriğini gösterir file_list.php varsayarak yaşıyorum. Ama nedense geri hala var olan dosya normal listesinde olacağını konumuna atlayarak gibi onlar sadece silinen dosya hakkında kullanıcı şey, ipucu için file_list.php istiyorum. Bunu yapmak için birkaç düzine yolu muhtemelen vardır.

1) delete_file.php url açar "/ file_list.php # the_file_i_just_dele.ted". Eğer bir dizi dizin içeriğini topladıktan sonra, muhtemelen alfabetik veya herneyse, bu diziye 'the_file_i_just_dele.ted' takın. , Liste yankı dizi boyunca ilerlerken, sadece dosya adı olabilir html çapa, eklemek 0, silinen dosyanın durumda 1 olur | "silinmiş" => 1:. That dizi başka mantıksal bir alan olmalıdır Her liste öğesi yanında. 'Silindi' 1 ise, yanındaki 'Sil' butonuna yankı yok. Açık sayfasında, sayfa 'the_file_i_just_dele.ted' çapa düz atlayacaktır.

2) ajax kullanın.

3) Tüm dosya sistemi eylemler için ayrı bir php kütüphanesi dosyası var. file_list.php müşteri görmeye ihtiyacı tek sayfasıdır. Silme üzerinde, file_list.php silinen dosya karşılaşıldığında url eklenir, bir diziye dizin içeriğini toplamak, then istenen dosyayı silmek, dizi echo '# silindi', ve, kendisine yayınlayacağız döngüde, devre dışı bırakmak veya and hemen yanındaki 'silindi' html çapa echo 'delete' tuşuna çizmek yok. Açık sayfasında, istemci otomatik 'silindi' çapa atlayacaktır.

4) bir alışveriş sepeti yapın ve sadece sorun tüm bu 'kullanıcı Önceki sayfa üzerinde nerede tutulması parça' ile ilgili degildir. Kullanıcı silinemez için her dosyayı kapatmak kontrol ettirin. "Alışveriş" deneyimi birden fazla dizin ve sayfaları yayılan olsaydı sepeti içeriğini izlemek için çerez, DB, veya oturum dosyasını kullanın. Kullanıcı sayfanın alt kısmında tek bir 'sil' düğmesine tıklar. Eğer isterseniz, listelenen dosyaların silinmesini onaylamak için kullanıcı soran bir 'çıkış onay' sayfa ekleyin.

... Vs ..

Ayrıca, mix ve uygun gördüğünüz gibi çözümlerini eşleşebilir.