2011-07-05 48 views
19

Tôi đang cố gắng đính kèm gọi lại đến hành động ajax "Gửi thư" trong Gmail. Tôi đã có thể phân biệt hành động Gửi thư từ các hành động AJAX khác dựa trên yêu cầu tải trọng nhưng không thể nối vào cuộc gọi AJAX thực tế.Chặn thư gửi yêu cầu AJAX trong Gmail

Cho đến giờ, tôi đã thử sử dụng phương pháp XMLHttpRequest.open() như chi tiết here. Điều đó đã không làm việc. Tôi cũng đã cố gắng ghi đè XMLHttpRequest.send(). Cũng thất bại.

Mọi suy nghĩ? Cảm ơn nhiều trước.

+0

Bạn đang xây dựng một plugin, một bookmarklet hay cái gì? – Gerben

+0

Xây dựng tiện ích của Chrome. Sử dụng tập lệnh nội dung để chèn javascript. –

+0

Bạn đã quản lý để nó hoạt động? Tôi đang đối mặt với cùng một vấn đề. –

Trả lời

8

Bí quyết của Google là họ gửi yêu cầu từ bên trong khung nội tuyến có môi trường JavaScript riêng. Tuy nhiên, kể từ khi nó được nạp từ nguồn gốc giống như cha mẹ, bạn vẫn có thể dễ dàng thao tác nó thậm chí từ trình duyệt giao diện điều khiển:

[].slice.apply(document.querySelectorAll('iframe')).forEach(function (iframe) { 
    try { 
     var xhrProto = iframe.contentWindow.XMLHttpRequest.prototype; 
     var origOpen = xhrProto.open; 
     xhrProto.open = function() { 
      console.log('DO SOMETHING', arguments); 
      return origOpen.apply(this, arguments); 
     }; 
    } catch (e) {} 
}); 

Bạn có thể muốn sử dụng một MutationObserver để phát hiện iframe mới được bổ sung đáng tin cậy.