سؤال

وكان يعمل في IE6، وفايرفوكس. ولكن لسبب ما ليس في IE7.

<ع> استخدام ASP.NET على Page_Init I تجميع قائمة من الفصول التي هي وصلات إلى الصورة في الكتاب فضلا عن مجموعة جافا سكريبت التي تتولى pageIDs.

والسابقين.

والفصل 1 -> أ href = "جافا سكريبت: تسرب (4)؛"

وهنا هو الرمز الفعلي الذي أستخدمه:


var availablePages = ['1002_001','1002_002','1002_003','1002_004','1002_005'];

function seePage(index) {
    $get('imgSingle').src = 'graphics/loading.gif';
    var img = new Image();
    img.src = 'get.jpg.aspx?size=single&id=' + availablePages[index];
    img.onload = function() {
         var single = $get('imgSingle');
         single.src = img.src;
    }
}

وعندما اضغط على الفصل 1، وتحميل الصورة الجميلة في جميع المجالات (IE6،7، FF) والنقر على رابط يعمل على الفصل الثاني أيضا. ومع ذلك، في (وفقط في) IE7 لا النقر على نفس الفصل مرتين (chap1، chap2، ثم chap1 مرة أخرى) لا صورة تتعثر على 'تحميل' صورة ... أنا سحب شعري هنا الرجال .. .

هل كانت مفيدة؟

المحلول

ولقد تسبب ذلك بسبب IE سوف تخزين الصورة، وسوف الحدث onload النار أبدا بعد بالفعل تم تحميله.

وتحتاج إلى وضع الحدث onload قبل الهلال الأحمر السوداني.

var availablePages = ['1002_001','1002_002','1002_003','1002_004','1002_005'];

function seePage(index) {
    $get('imgSingle').src = 'graphics/loading.gif';
    var img = new Image();
    img.onload = function() {
         var single = $get('imgSingle');
         single.src = img.src;
    }
    img.src = 'get.jpg.aspx?size=single&id=' + availablePages[index];
}

نصائح أخرى

وهناك طريقة أخرى للقيام بذلك هي للتحقق مما إذا تم تحميل صورة بالفعل مع image.complete. على سبيل المثال:

var img = new Image();
img.src = 'foo.jpg';
if(img.complete){
    img.onload = function(){ /* ... */ };
} else {
    /* execute something else, or the same. */
}

ولقد شهدت هذا السلوك في IE6 و 7.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top