Uses Greasemonkey API with permissions