diff --git a/spec/app/window-spec.coffee b/spec/app/window-spec.coffee index a173689c7..e39f451b9 100644 --- a/spec/app/window-spec.coffee +++ b/spec/app/window-spec.coffee @@ -230,3 +230,25 @@ describe "Window", -> event = buildDragEvent("drop", []) window.onDrop(event) expect(atom.open).not.toHaveBeenCalled() + + describe "when a link is clicked", -> + it "opens the http/https links in an external application", -> + ChildProcess = require 'child_process' + spyOn(ChildProcess, 'spawn') + + $("the website").appendTo(document.body).click().remove() + expect(ChildProcess.spawn).toHaveBeenCalled() + expect(ChildProcess.spawn.argsForCall[0][1][0]).toBe "http://github.com" + + ChildProcess.spawn.reset() + $("the website").appendTo(document.body).click().remove() + expect(ChildProcess.spawn).toHaveBeenCalled() + expect(ChildProcess.spawn.argsForCall[0][1][0]).toBe "https://github.com" + + ChildProcess.spawn.reset() + $("the website").appendTo(document.body).click().remove() + expect(ChildProcess.spawn).not.toHaveBeenCalled() + + ChildProcess.spawn.reset() + $("link").appendTo(document.body).click().remove() + expect(ChildProcess.spawn).not.toHaveBeenCalled() diff --git a/src/app/window.coffee b/src/app/window.coffee index a70829762..c477031d5 100644 --- a/src/app/window.coffee +++ b/src/app/window.coffee @@ -27,6 +27,15 @@ window.setUpEnvironment = -> window.pasteboard = new Pasteboard window.keymap = new Keymap() $(document).on 'keydown', keymap.handleKeyEvent + + $(document).on 'click', 'a', (e) -> + location = $(e.target).attr('href') + return unless location or location[0] is '#' + + if location.indexOf('https://') is 0 or location.indexOf('http://') is 0 + require('child_process').spawn('open', [location]) if location + false + keymap.bindDefaultKeys() requireStylesheet 'atom'