php قوة تحميل/تحديث عند الضغط على زر العودة




mysql codeigniter (11)

وسأحاول قصارى جهدي لشرح هذا.

لدي تطبيق التي تظهر 50 + المشاريع في صفحة رأيي. يمكن للمستخدم النقر على المشروع الفردي والانتقال إلى صفحة التحديث لتحديث معلومات المشروع. كل شيء يعمل بشكل جيد إلا أنه بعد الانتهاء من المستخدم تحديث معلومات المشروع الفردية وضرب زر "العودة" على المتصفح إلى view page السابقة. معلومات المشروع القديم (قبل التحديث) لا يزال هناك. المستخدم لديه لتصل التحديث لرؤية المعلومات المحدثة. أنها ليست سيئة، ولكن أود أن توفر تجربة أفضل للمستخدم. أي فكرة لإصلاح هذا؟ شكرا جزيلا.


حسنا، يمكنك إما توفير زر رجوع مضمن في صفحة التحديث التي سترسلها إليها (مثل الرابط <a href="<?= $_SERVER['HTTP_REFERRER']; ?>">BACK</a> أو وضع بعض النص البرمجي على الصفحة التي ستجبرها على سحب البيانات في كل مرة يتم فيها ضرب الصفحة، سواء كانت انطباعا جديدا، أو إذا تم استخدام زر الرجوع.


بعد أيام من البحث على الشبكة لإيجاد حل، وأخيرا الرقم بها، إضافة بعد:

<script>
 window.onbeforeunload = function(){window.location.reload();}
</script>

وهذا سيعمل مثل سحر سوف أشكر لي

سيؤدي هذا الرمز إلى إعادة تحميل الصفحة عند زيارتها.



"فب-كاش" يمكن أن يكون مزعج حقا. هنا هو طريقة جافا سكريبت بسيطة حوله:

window.onpageshow = function(evt) {
    // If persisted then it is in the page cache, force a reload of the page.
    if (evt.persisted) {
        document.body.style.display = "none";
        location.reload();
    }
};

اختبارها في سفاري 6 و IE10.


لحسن الحظ، ليس لدينا لدعم المتصفحات أدناه IE10، لذلك إذا كنت على استعداد أو امتيازات كافية لدعم المتصفحات التي هي قادرة HTML5 فقط، يجب أن تعمل ما يلي:

/*
 * The following is intentional, to force Firefox to run 
 * this JS snippet after a history invoked back/forward navigation.
 */
window.onunload = function(){};    

function formatTime(t) {
    return t.getHours() + ':' + t.getMinutes() + ':' + t.getSeconds();
}

if (window.history.state != null && window.history.state.hasOwnProperty('historic')) {
    if (window.history.state.historic == true) {
        document.body.style.display = 'none';
        console.log('I was here before at ' + formatTime(window.history.state.last_visit));
        window.history.replaceState({historic: false}, '');
        window.location.reload();
    } else {
        console.log('I was forced to reload, but WELCOME BACK!');
        window.history.replaceState({
            historic  : true,
            last_visit: new Date()
        }, '');
    }
} else {
    console.log('This is my first visit to ' + window.location.pathname);
    window.history.replaceState({
        historic  : true,
        last_visit: new Date()
    }, '');
}

حسنا، هنا رمز دون تعليقات و فلب:

window.onunload = function(){};

if (window.history.state != null && window.history.state.hasOwnProperty('historic')) {
    if (window.history.state.historic == true) {
        document.body.style.display = 'none';
        window.history.replaceState({historic: false}, '');
        window.location.reload();
    } else {
        window.history.replaceState({historic  : true}, '');
    }
} else {
    window.history.replaceState({historic  : true}, '');
}

عصا أن قبل علامة إغلاق الجسم الخاص بك، وسيكون لديك حل نظيفة إلى حد ما.

هذا سوف تعمل مع أي مزيج من العودة / إلى الأمام يتم النقر عليها، وحظة المستخدم الأراضي على صفحة جديدة، لن يحدث إعادة تحميل القسري.

قراءة المزيد حول كائن السجل على مدن:

مدن - كائن التاريخ

مدن - تنظيف محفوظات المتصفح


هذا هو الحل الذي استخدمته:

<?php
session_start();
if (!$_SESSION['reloaded']) {$_SESSION['reloaded'] = time();}
else if ($_SESSION['reloaded'] && $_SESSION['reloaded'] == time()) { ?> 
<script> 
location.reload(); 
</script> 
<?php } ?>

لم يعمل أي من الحلول المذكورة أعلاه بالنسبة لي. هذا الحل البسيط المنشور هنا يعمل ...

لقد حاولت فرض صفحة ليتم تحميلها مرة أخرى عن طريق المتصفح عندما ينقر المستخدم زر العودة، ولكن لا شيء عملت. يبدو أن المتصفحات الحديثة تحتوي على ذاكرة تخزين مؤقت منفصلة للصفحات، والتي تخزن الحالة الكاملة للصفحة (بما في ذلك عناصر جافا سكريبت التي تم إنشاؤها بواسطة جافا سكريبت)، لذلك عندما يضغط المستخدمون على زر الرجوع، يتم عرض الصفحة السابقة على الفور في حالة ترك المستخدم لها. إذا كنت ترغب في فرض المتصفح لإعادة تحميل الصفحة على زر الرجوع، أضف أونونلواد = "" إلى (X) عنصر الجسم هتمل الخاص بك:

<body onunload="">

هذا تعطيل ذاكرة التخزين المؤقت الخاصة وقوات صفحة تحميل عندما يضغط المستخدم الزر مرة أخرى. فكر مرتين قبل استخدامه. حقيقة الحاجة إلى مثل هذا الحل هو تلميح الخاص بك مفهوم الملاحة الموقع معيبة.


جعل مربع خفية واستخدام أدناه رمز (كوفيسكريبت)

window.location.reload()  if $("#refreshCheck")[0].checked
  $("#refreshCheck")[0].checked = true

هنا هو الحل الذي إيف المستخدمة في بعض صفحاتي. أضف هذا إلى الصفحات التي يتم إجراء التغييرات فيها.

window.onbeforeunload = function() {
     window.name = "reloader"; 
        }

وهذا يؤدي عند ترك تلك الصفحات. يمكنك أيضا تشغيله إذا كانت هناك تغييرات تم إجراؤها. بحيث لن يتم إعادة تحميل الصفحة دون الحاجة إلى إعادة التحميل. ثم على الصفحات التي تريد الحصول على إعادة تحميلها بعد استخدام المتصفح "مرة أخرى".

if (window.name == "reloader")
      {
        window.name = "no";
        reloadPage(); 
      }

وهذا سيؤدي إلى تحميل على الصفحة التي تحتاج إلى إعادة تحميل إلى ... نأمل هذا يساعد :) يا راجع للشغل هذا هو في جس.


 if (window.name == "reloader") {
            window.name = "";
            location.reload();
        }

window.onbeforeunload = function() {
                window.name = "reloader"; 
            }

أضف هاتين الوظيفتين في كل صفحة


أنا استخدم مسج و سكريبت فب لإجبار إعادة تحميل على باكبوتون. هناك حاجة إلى جزء window.unload فقط في فايرفوكس. مهلة أوتكومنتد 1 ثانية والجسم إلحاق جزء هو فقط لتوضيح وظيفة. window.location.reload (ترو) سيعطي نفس النتيجة مثل window.location.href = window.location.href؛

مسج:

<script>
    $(window).unload(function() {});


        $.get('h.php',function(data){
            if($.trim(data)=='first'){
               // $('body').append(data)
               // setTimeout(function(){
               window.location.href = window.location.href;
               // },1000)
            }
            else {
                // $('body').append(data)
            }
        });

</script>

h.php:

<?php session_start(); ?>
<?php 
if(!$_SESSION['reloaded']){
    echo 'first';   

    $_SESSION['reloaded']=1;
}
else {
    echo 'second';
    unset($_SESSION['reloaded']);   
}
?>