5

Tôi đang cố gắng tạo tiện ích mở rộng của Chrome để giúp tôi hiểu API webRequest của Chrome bằng cách sao chép những gì được thực hiện với this answer nhưng không có phần thử nghiệm của không gian tên, không còn cần thiết nữa kể từ khi webRequest bây giờ trong thân cây của Chrome.Chuyển tiếp đơn giản bằng cách sử dụng Google Chrome webRequest API

Trong trang nền của tôi Tôi có đoạn code:

<!DOCTYPE html> 
<html> 
    <head> 
    <script> 
function interceptRequest(request) { 
    return { redirectUrl: 'http://www.yahoo.com' } 
} 
chrome.webRequest.onBeforeRequest.addListener(interceptRequest, { urls: ['*://*.google.com/*'] }, ['blocking']); 
    </script> 
    </head><body></body> 
</html> 

Trong file manifest của tôi, tôi có:

{ 
    "name": "My Extension", 
    "version": "0.1", 
    "background_page": "background.html", 
    "permissions" : [ 
    "webRequest", 
    "webRequestBlocking", 
    "*://*/*" 
    ] 
} 

Dựa trên trước hỏi câu hỏi, tôi nên được chuyển tiếp đến http://www.yahoo.com khi tôi truy cập https://www.google.com và tiện ích mở rộng của tôi được tải, tuy nhiên, https://www.google.com tải mà không có bất kỳ hiệu ứng chuyển tiếp nào. Tôi cần phải làm gì để chỉ cần chuyển tiếp người dùng từ một URI này sang một URI khác bằng URI API webRequest trong Chrome?

+0

Thật kỳ quặc. Điều duy nhất tôi có thể nghĩ đến là đảm bảo bạn không tải bất kỳ XHR đồng bộ nào hoặc bao gồm bất kỳ thẻ tập lệnh nào từ tài nguyên trực tuyến trong trang nền của bạn, từ tài liệu Chrome. – gengkev

Trả lời

3

Mẫu đối sánh url của bạn không chính xác. Bạn chỉ cần thêm một dấu gạch chéo:

{urls: ['https://www.google.com/']} 

Ngoài ra, bạn có thể sử dụng: '*: //www.google.com.vn/' để phù hợp với tất cả các giao thức, '*: // www. google.com/*' để phù hợp vượt chỉ lĩnh vực, và '*: //*.google.com/*' để phù hợp với tất cả các tên miền phụ, các giao thức và các đường dẫn vv

Xem: http://code.google.com/chrome/extensions/trunk/match_patterns.html

+0

Cảm ơn bạn đã phản hồi, nhưng không giải pháp nào khiến trình duyệt được chuyển tiếp tới Yahoo. Bạn có thấy bất cứ điều gì khác sai với các bên trên hoặc có lẽ một cái gì đó tôi đã không bao gồm? –

+1

Tôi đã tạo một tiện ích mở rộng với mã của bạn và nó hoạt động tốt cho tôi sau khi đặt dấu gạch chéo ở trường 'url' như được mô tả trong nhận xét của tôi ở trên. Điều duy nhất tôi nhận thấy là 'content_scripts' trong tệp kê khai của bạn ... bạn có tệp' content.js' không? Bạn không cần nó cho chức năng này. Tất cả các đường dẫn của bạn có đúng không (background.html và content.js nằm trong thư mục gốc của tiện ích mở rộng của bạn)? Ngoài ra, hãy quấn các thẻ '' xung quanh mã JS của bạn vào background.html của bạn (tôi cho rằng nó đã được gói - đó là tệp html, sau tất cả, không phải tệp js). – rgthree

+0

Ngay cả khi bổ sung '/' và việc loại trừ content.js khỏi tệp kê khai, tôi không thể đưa trang đó chuyển tiếp khi truy cập http://www.google.com. Tôi đã cập nhật nguồn của các tệp của mình ở trên để toàn diện hơn (giờ đây chúng chứa toàn bộ nội dung của tệp) và để xóa các mục không cần thiết trong tệp kê khai. Có bất cứ điều gì nổi bật trong các tập tin trên mà lệch khỏi phiên bản bạn đã tạo có chức năng không? Tôi thực sự quan tâm đến việc này để làm việc. –

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