2009-06-23 29 views
9

Tôi đang viết tập lệnh .pac tùy chỉnh để sử dụng với Firefox. Sau nhiều ví dụ tôi đã nhìn thấy, tôi xen kẽ alert() s để gỡ lỗi nó, nhưng không có cảnh báo popup, mặc dù kịch bản rõ ràng đang được gọi. (Tôi đang nhấp vào "Tải lại" trong "Cài đặt kết nối" sau mỗi thay đổi đối với tập lệnh của tôi. Tôi thậm chí đã thử khởi động lại Firefox.)Gỡ lỗi javascript autoproxy (PAC) với cảnh báo()?

Cảnh báo có hoạt động từ tập lệnh PAC không? Có lẽ đây là một tính năng chỉ có trên IE?

Trả lời

9

http://mxr.mozilla.org/mozilla-central/source/netwerk/base/src/nsProxyAutoConfig.js

Chức năng cảnh báo sẽ được thêm vào sandbox:

80   // add predefined functions to pac 
81   this._sandBox.importFunction(myIpAddress); 
82   this._sandBox.importFunction(dnsResolve); 
83   this._sandBox.importFunction(proxyAlert, "alert"); 

Và các cuộc gọi chức năng ánh xạ đổ, mà đi đến Lỗi Console:

108 function proxyAlert(msg) { 
109  msg = XPCSafeJSObjectWrapper(msg); 
110  try { 
111   // It would appear that the console service is threadsafe. 
112   var cns = Components.classes["@mozilla.org/consoleservice;1"] 
113        .getService(Components.interfaces.nsIConsoleService); 
114   cns.logStringMessage("PAC-alert: "+msg); 
115  } catch (e) { 
116   dump("PAC: proxyAlert ERROR: "+e+"\n"); 
117  } 
+0

Thú vị. Tôi tự hỏi tại sao họ đơn phương chuyển đổi các cảnh báo để đăng nhập bãi chứa. Tôi cho rằng cảnh báo popping trong một hoạt động cấp thấp như vậy được coi là không thể chấp nhận được. –

+0

Vâng. Nó không phải trong spec, nó không phải trong bất kỳ lỗi PAC tôi từng tìm thấy (tôi đã kiểm tra Proxy và PAC cho Netscape/AOL/Mozilla). Chúng tôi có thể đi đào trong changelog ... – benc

+1

Nó xảy ra với tôi rằng cảnh báo() có thể đòi hỏi một đối tượng cửa sổ, và là một hoạt động cấp mạng, chắc chắn là không có đối tượng cửa sổ nào được nêu ra. Thậm chí không có kết nối TCP, vì kịch bản PAC đang giúp quyết định cách chúng ta sẽ kết nối ... –

1

Bạn có thể cần phải tắt "EnableAutoproxyResultCache" trong sổ đăng ký Windows. . .

+1

Theo http://support.microsoft.com/kb/271361, đó là tính năng của IE. Khóa đó không xuất hiện ở bất kỳ nơi nào trong sổ đăng ký của tôi và tôi nghi ngờ rằng nó sẽ ảnh hưởng đến Firefox. –

3

Ah Ha! Các thông báo cảnh báo đang được ghi vào bảng điều khiển. Tôi thực sự thích rằng để cảnh báo cửa sổ bật lên anyway.

0
  1. Sử dụng Chức năng alert trong tệp .pac của bạn.

    • Trong Firefox Trình duyệt:

      cụ ->Web Developer ->Trình duyệt Console (Ctrl + Shift + J) [Đây không phải là Web Console !! ] -> Đầu ra bộ lọc: PAC-alert

    • Trong Chrome Trình duyệt:

      chrome://net-internals/#events -> Tìm kiếm một kỷ lục với mô tả: PAC_JAVASCRIPT_ALERT

      (Giới thiệu về Chrome nhờ cho câu trả lời này: https://serverfault.com/a/738871)


mẫu .pac file:

function FindProxyForURL(url, host) { 
    alert("url = " + url + " *** host = " + host + " *** Resolved IP = " + dnsResolve(host)); 

    return "DIRECT"; 
} 
+0

liên kết chính xác là chrome: // net-internals/# events – claya

+0

@claya Liên kết là chính xác. Nhưng nếu bạn nhấp vào nó, trình duyệt của bạn sẽ cố gắng tải liên kết đã chỉnh sửa, có thể. Chỉ cần ** sao chép và dán ** vào thanh địa chỉ của bạn. –

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