SelectorGadget is an open source bookmarklet that makes CSS selector generation and discovery on complicated sites a breeze.
Please visit http://www.selectorgadget.com to try it out.
- CoffeeScript
- jQuery
- diff-match-patch
SelectorGadget can be extended for use in custom workflows with a remote interface that replaces the standard display and controls.
To define a remote interface, create a JavaScript file with any functionality you need, and append any relevant controls to SelectorGadget's UI container. Here's a simple example:
// sg_interface.js
var SG = window.selector_gadget
// Add field to display current selection (note the use of jQuerySG,
// SelectorGadget's jQuery alias).
var path = jQuerySG('<input>', { id: 'sg-status', class: 'selectorgadget_ignore' })
SG.sg_div.append(path)
SG.path_output_field = path.get(0)
// Add button to dismiss SelectorGadget
var btnOk = jQuerySG('<button>', { id: 'sg-ok', class: 'selectorgadget_ignore' }).text('OK')
SG.sg_div.append(btnOk)
jQuerySG(btnOk).bind('click', function(event) {
jQuerySG(SG).unbind()
jQuerySG(SG.sg_div).unbind()
SG.unbindAndRemoveInterface()
SG = null
})
// Watch the input field for changes
var val = saved = path.val()
var tid = setInterval(function() {
val = path.val()
if(saved != val) {
console.log('New path', val, 'matching', (jQuerySG(val).length), 'element(s)')
saved = val
}
}, 50)
Set the path to the remote interface in SelectorGadget's sg_options object prior to instantiation, like this:
window.sg_options = {
remote_interface: '/path/to/sg_interface.js'
}
window.selector_gadget = new SelectorGadget()
// ...
Start by installing development dependencies with
bundle
and then run
guard
to watch and regenerate SelectorGadget's .coffee
and .scss
files.
SelectorGadget is tested with http://pivotal.github.com/jasmine/. With guard running,
open spec/SpecRunner.html in your browser to run the tests. (On a Mac, just do open spec/SpecRunner.html
)
To manually test during local development, open spec/test_sites/bookmarklet_local.html
and use that local bookmarklet on the contents of spec/test_sites.