General
: K-Meleon Forum
General discussion about K-Meleon.
Goto:
Forum List
•
Message List
•
Search
•
Log In
Your Name:
Subject:
Help information
BBcode help
Smileys help
[quote=adodupan] JamesD, i hope this example will help you to learn how to use kmprefs in javascript. Green line is disabled code, blue is new or changed code. root\components file donottrack.js [size="10px"] /* donottrack.js Jonathan Mayer - jmayer@stanford.edu An XPCOM component that adds a Do Not Track header to all web requests. v0.02 - 1/30/11 Updated header. v0.01 - 10/26/10 Acknowledgement: Closely follows Mozilla's example XPCOM HTTP header modification component, https://developer.mozilla.org/en/Setting_HTTP_request_headers. */ [color=green]// var DoNotTrackHeaderName = "DNT"; // var DoNotTrackHeaderValue = "1";[/color] function DNTHTTPListener() { } DNTHTTPListener.prototype = { observe: function(subject, topic, data) { if (topic == "http-on-modify-request") { var httpChannel = subject.QueryInterface(Components.interfaces.nsIHttpChannel); [color=blue] var dntprefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch('navigator.');[/color] [color=green] // httpChannel.setRequestHeader(DoNotTrackHeaderName, DoNotTrackHeaderValue, false);[/color] [color=blue]httpChannel.setRequestHeader("DNT", dntprefs.getIntPref("doNotTrack"), false);[/color] return; } else if (topic == "app-startup" || topic == "profile-after-change") { var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService); observerService.addObserver(this, "http-on-modify-request", false); return; } }, QueryInterface: function (iid) { if (iid.equals(Components.interfaces.nsIObserver) || iid.equals(Components.interfaces.nsISupports)) return this; Components.returnCode = Components.results.NS_ERROR_NO_INTERFACE; return null; }, }; var myModule = { registerSelf: function (componentManager, fileSpec, location, type) { var componentManagerI = componentManager.QueryInterface(Components.interfaces.nsIComponentRegistrar); componentManagerI.registerFactoryLocation(this.myCID, this.myName, this.myProgID, fileSpec, location, type); var categoryManager = Components.classes["@mozilla.org/categorymanager;1"].getService(Components.interfaces.nsICategoryManager); categoryManager.addCategoryEntry("app-startup", this.myName, this.myProgID, true, true); }, getClassObject: function (compMgr, cid, iid) { return this.myFactory; }, myCID: Components.ID("{b835ff9f-3fdd-47be-b216-d1e8c09252f5}"), myProgID: "@donottrack.us/DNTHTTPListener;1", myName: "Do Not Track HTTP Listener", myFactory: { QueryInterface: function (aIID) { if (!aIID.equals(Components.interfaces.nsISupports) && !aIID.equals(Components.interfaces.nsIFactory)) throw Components.results.NS_ERROR_NO_INTERFACE; return this; }, createInstance: function (outer, iid) { return new DNTHTTPListener(); } }, canUnload: function(compMgr) { return true; } }; function NSGetModule(compMgr, fileSpec) { return myModule; } [/size] Macrolanguage, just for menu item. root\macros file doNotTrack.kmm [size="10px"][color=blue] $OnInit=$OnInit."_doNotTrack_01;"; $macroModules=$macroModules."doNotTrack;"; _doNotTrack_01{ setmenu("&Privacy",inline,_doNotTrack,_Privacy_Settings); setmenu(_doNotTrack,macro,"I do not want to be tracked",_doNotTrack_02); } _doNotTrack_02{ macroinfo=_("Toggle Do Not Track"); menuchecked=getpref(INT,"navigator.doNotTrack")==1; togglepref(INT,"navigator.doNotTrack",0,1); } [/color][/size] It is necessary to create a preference INT 'navigator.doNotTrack', or in the root\defaults\pref create a file doNotTrack.js [size="10px"][color=blue] pref("navigator.doNotTrack",1);[/color][/size] Regards[/quote]
[Please Enable JavaScript]
K-Meleon forum is powered by
Phorum
.
Home/News
Screenshots
Download
Documentation
Resources
Get Involved
Forum
Bugs
Development