我正在编写一个用于 Firefox 的自定义 .pac 脚本。在我见过的许多示例之后,我穿插了 alert() 以对其进行调试,但没有弹出警报,即使显然正在调用脚本。(每次更改脚本后,我都会在“连接设置”中单击“重新加载”。我什至尝试过重新启动 Firefox。)
警报是否应该通过 PAC 脚本起作用?也许这是一个仅限 IE 的功能?
我正在编写一个用于 Firefox 的自定义 .pac 脚本。在我见过的许多示例之后,我穿插了 alert() 以对其进行调试,但没有弹出警报,即使显然正在调用脚本。(每次更改脚本后,我都会在“连接设置”中单击“重新加载”。我什至尝试过重新启动 Firefox。)
警报是否应该通过 PAC 脚本起作用?也许这是一个仅限 IE 的功能?
http://mxr.mozilla.org/mozilla-central/source/netwerk/base/src/nsProxyAutoConfig.js
沙箱中添加了警报功能:
80 // add predefined functions to pac
81 this._sandBox.importFunction(myIpAddress);
82 this._sandBox.importFunction(dnsResolve);
83 this._sandBox.importFunction(proxyAlert, "alert");
映射函数调用转储,转至错误控制台:
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 }
在文件中使用alert
函数。.pac
在火狐浏览器中:
工具-> Web 开发人员->浏览器控制台 (Ctrl+Shift+J) [这不是Web 控制台!!] -> 过滤输出:PAC-alert
在Chrome浏览器中:
转到chrome://net-internals/#events
-> 搜索带有描述的记录:PAC_JAVASCRIPT_ALERT
(关于 Chrome,谢谢这个答案)
示例.pac
文件:
function FindProxyForURL(url, host) {
alert("url = " + url + " *** host = " + host + " *** Resolved IP = " + dnsResolve(host));
return "DIRECT";
}
啊哈!警报消息正在记录到控制台。无论如何,我实际上更喜欢提醒弹出窗口。
您可能需要在 Windows 注册表中禁用“EnableAutoproxyResultCache”。. .