2012-04-24 36 views
7

Tôi có thể đặt câu hỏi sai ở đây vì vậy tôi sẽ cung cấp một lượng nhỏ chi tiết về những gì tôi đang cố gắng hoàn thành.Phát hiện chuyển hướng trong iFrame

Tôi sử dụng ứng dụng web của bên thứ ba để theo dõi vé hỗ trợ. Họ cung cấp mã cho một biểu mẫu mà người dùng của tôi điền và gửi đến miền của họ. Tôi muốn sử dụng biểu mẫu này trên hai tên miền khác nhau, nhưng tiếc là bên thứ ba sử dụng một giá trị chuyển hướng được mã hóa đơn lẻ. Điều này khiến một trong các trang web của tôi chuyển đổi tên miền sau khi gửi.

Tôi đã nghĩ mình có thể nhúng biểu mẫu của mình vào iFrame, phát hiện chuyển hướng về gửi biểu mẫu thành công và thay vào đó chuyển hướng đến một trong các trang của riêng tôi.

Mã giả:

iframe.detectRedirection 
if (redirect == 'xyz.html') { 
    //do my own redirection in main window. 
} 

Vì vậy, trở lại câu hỏi ban đầu của tôi - làm thế nào tôi có thể phát hiện sự chuyển hướng trong iframe?

+0

có thể bạn có thể ràng buộc sự kiện gửi biểu mẫu bằng cách sử dụng jquery, tự xử lý việc gửi biểu mẫu và kiểm tra mã phản hồi? –

+0

@RetoAebersold - ý tưởng tuyệt vời, tôi thực sự nghĩ về điều này bản thân mình. Tuy nhiên, biểu mẫu gửi tệp đính kèm để tôi không thể gửi nó qua AJAX. – mrtsherman

Trả lời

9

Bạn có thể thử

$("iframe").load(function(){ 
    //The iframe has loaded or reloaded. 
}); 

để phát hiện việc bốc khung và sảng khoái

và nếu chuyển hướng xảy ra trên tải thứ hai

//var to count times iframe has loaded 
var timesRefreshed = 0; 

//detect iframe loading/refreshing 
$("iframe").load(function(){ 

    //if second refresh, change frame src - ie dont count first load 
    if(timesRefreshed == 1){ 
     $(this).attr("src","my site url here"); 
    } 

    //add to times resreshed counter 
    timesRefreshed++; 

}); 

nếu có giai đoạn hơn chỉ cần thay đổi x với số lượng giai đoạn

if(timesRefreshed == x) 

bằng chứng này không đầy đủ. tức là nếu có thể phá vỡ nếu các trang web khác cho biết thêm một giai đoạn vv nhưng tốt nhất của nó có thể nghĩ nếu bạn không có bất kỳ kiểm soát trên các trang web khác.

+0

Có sự kiện cháy sớm hơn tải không? Tôi đã thử 'sẵn sàng', nhưng nó không kích hoạt. Thật không may là iframe tải toàn bộ trang web khác trước khi trình kích hoạt sự kiện 'load' để nó trông không đẹp lắm. – mrtsherman

+0

Hmm, cũng nhấn các vấn đề về chính sách gốc miền x. Tôi đoán đây là lý do tại sao bạn chọn để đi theo số lần làm mới? – mrtsherman

+0

Yup. Cách duy nhất tôi có thể nghĩ là đếm làm mới vì trang web trong khung nội tuyến nằm trên một tên miền khác, do đó bạn sẽ không có quyền truy cập vào nó vì lý do bảo mật. bị bệnh có một trò chơi và lấy lại cho bạn. –

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