2010-07-15 39 views
13

Tôi có một yếu tố iframe với một thuộc tính scr ngẫu nhiên. Khi tôi làm mới trang mỗi lần, iframe sẽ tải trang có các thông số truy vấn khác nhau dựa trên thuộc tính src. Nhưng trong firefox, nếu tôi cố gắng tải URL động trong iframe, nó luôn thực thi URL được thực thi lần đầu tiên khi thuộc tính src thay đổi động. Các tham số truy vấn cũng không được truyền chính xác. Vì vậy, làm thế nào tôi có thể giải quyết vấn đề này?iframe src bộ nhớ đệm vấn đề trên firefox

ví dụ:

<?php 

$url = "http://localhost/test.php"; 

$rand_val = rand(1000, 9999); 

echo "<iframe name='dynamicload' src='{$url}?rand_val={$rand_val}'></iframe>"; 

?> 

Trả lời

4

Chúng tôi đã có cùng một vấn đề với firefox bộ nhớ đệm src iframe và vô hiệu hóa bộ nhớ cache trên trang gốc cũng như trang iframe không giúp đỡ. Chúng tôi đặt đoạn mã sau (jQuery code) trong hàm onload của iframe:

$(parent.document).find("iframe").each(function() { 
    // apply the logic only to the current iframe only 
    if(this.contentDocument == window.document) { 
     // if the href of the iframe is not same as 
     // the value of src attribute then reload it 
     if(this.src != location.href) { 
     this.src = this.src; 
     } 
    } 
}); 
+0

hey Rajiv, giải pháp của bạn hoạt động hoàn hảo. Cảm ơn bạn đã trả lời – karuh24

+0

Trong giải pháp này url gốc luôn nạp đầu tiên mặc dù ... – Dallin

1

Mã của bạn trong PHP thực hiện một lần và gửi nội dung cho trình duyệt. Khi bạn làm mới trang, mã không chạy lại trong máy chủ, vì nó được cung cấp bởi bộ nhớ cache. Vì vậy, src của iframe sử dụng cùng một số ngẫu nhiên.

Để tránh điều này bạn cần phải vô hiệu hóa bộ nhớ đệm của trang gốc (không phải là iframe). Hoặc bạn có thể có số ngẫu nhiên được tạo ra ở phía máy khách (sử dụng javascript) để nó là duy nhất mỗi lần.

+0

tôi đã vô hiệu hóa bộ nhớ đệm trong máy chủ cũng như phía khách hàng nhưng nó không hoạt động. Tôi đã thấy nguồn xem, id ngẫu nhiên được tạo đúng cách và mọi lúc và iframe src cũng thay đổi đúng cách nhưng đối tượng $ _REQUEST dường như không bị thay đổi. – karuh24

3

Nó được báo cáo là một lỗi của firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=279048

một workaround được đặt lại src của iframe: document.getElementById ('iframe_id'). src = 'target_url';

Tuy nhiên sẽ có hai yêu cầu: yêu cầu đầu tiên là sai và hủy bỏ ngay lập tức trước khi yêu cầu thứ hai đó là chính xác.

+0

lăm năm trước đây và lỗi (tương tự?) Vẫn còn hiện diện trong 41.0.2 ... pitty tôi không thể tái tạo nó mà không có dữ liệu khách hàng nhạy cảm:/ – Buksy

+0

Hầu 6 năm sau, và hôm nay tôi nâng cấp lên FF 48. Vẫn là một vấn đề! -_- – indextwo

Các vấn đề liên quan