2012-04-21 36 views

Trả lời

8

Các webRequest API có thể là những gì bạn cần mã này đi trong trang nền của bạn :

chrome.webRequest.onBeforeRequest.addListener(
    function(details) { 
     if(details.url == "http://www.google.com/") 
      return {redirectUrl: "http://www.google.com/?q=defaultquery" }; 
    }, 
    {urls: ["http://www.google.com/*"]}, 
    ["blocking"]); 

Đây là một quy tắc cực kỳ cụ thể mà chuyển hướng chuyến thăm http://www.google.com/ với http://www.google.com/?q=defaultquery, nhưng tôi nghĩ rằng bạn ca n xem cách mở rộng nó để bao gồm nhiều chức năng hơn.

Lưu ý rằng điều này sẽ định tuyến lại tất cả cố gắng truy cập http://www.google.com/, bao gồm các yêu cầu Ajax và iframe.

mỗi tài liệu, bạn sẽ cần phải thêm webRequestwebRequestBlocking quyền, cùng với các điều khoản chủ cho tất cả các máy chủ bạn có kế hoạch để đánh chặn:

"permissions": [ 
    "webRequest", 
    "webRequestBlocking", 
    "*://*.google.com/", 
    ... 
], 
+0

Những tập tin tôi nên viết mã này, làm thế nào chúng ta thêm phép cho việc này. – anwerj

+1

@anwerjunaid Từ văn bản ở trên: "Mã đi trong trang nền của bạn". Các quyền cần thiết được mô tả trong [đoạn đầu tiên trong tài liệu webRequest] (http://code.google.com/chrome/extensions/webRequest.html), mà tôi đã liên kết ở trên. Bạn cần 'webRequest',' webRequestBlocking' và quyền máy chủ cho mỗi trang web bạn muốn chặn. – apsillers

1

Đây là một câu hỏi cũ vẫn tôi trả lời nó cho người đọc trong tương lai.

Sửa đổi tham số truy vấn hơi phức tạp vì bạn có thể kết thúc trong vòng lặp vô hạn và chrome/firefox có thể phát hiện và xử lý trạng thái hiện tại của yêu cầu Url.

tôi đã phải đối mặt với tình trạng này trong phần mở rộng chrome của tôi Requestly nơi người sử dụng Replace Rule và thay thế www.google.com với www.google.com?q=query hoặc đã làm một cái gì đó tương tự.

Vấn đề với cách tiếp cận này là trình duyệt có thể chặn url yêu cầu sau khi thêm tham số truy vấn để thông số sẽ được thêm nhiều lần và làm hỏng url. Vì vậy, bạn phải đảm bảo một trong các điều sau: -

  1. Không chặn yêu cầu khi nó đã được chuyển hướng.
  2. Kiểm tra xem thông số đã tồn tại chưa, không chuyển hướng nó.

Như được chỉ ra một cách chính xác bởi @apsillers trong câu trả lời của mình, bạn phải sử dụng API webRequest để thực hiện bất kỳ sửa đổi nào đối với URL. Vui lòng xem số answer và viết mã của bạn cho phù hợp.

Chỉ trong trường hợp, bạn đang tìm kiếm giải pháp đã có sẵn, hãy xem xét thử Requestly's Query Parameter Rule. Đây là một ảnh chụp màn hình về cách nó trông giống như: -

enter image description here

Đối với Firefox, bạn có thể tải Requestly from its home page.

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