From 75cd94a39a80721eccf8c1bc09dab997f60f8f7e Mon Sep 17 00:00:00 2001 From: Rokt33r Date: Sat, 16 Jan 2016 05:28:27 +0900 Subject: [PATCH] refactor MarkdownPreview & protocol must be defined in 'href' to open in browser --- browser/components/MarkdownPreview.js | 33 ++++++++++++++++++--------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/browser/components/MarkdownPreview.js b/browser/components/MarkdownPreview.js index 50e521ac..468b15ec 100644 --- a/browser/components/MarkdownPreview.js +++ b/browser/components/MarkdownPreview.js @@ -52,7 +52,10 @@ function handleAnchorClick (e) { } e.preventDefault() e.stopPropagation() - shell.openExternal(e.target.href) + let href = e.target.href + if (href.match(/^http:\/\/|https:\/\/|mailto:\/\//)) { + shell.openExternal(href) + } } function stopPropagation (e) { @@ -117,22 +120,30 @@ export default class MarkdownPreview extends React.Component { addListener () { var anchors = ReactDOM.findDOMNode(this).querySelectorAll('a:not(.lineAnchor)') + var inputs = ReactDOM.findDOMNode(this).querySelectorAll('input') - for (var i = 0; i < anchors.length; i++) { - anchors[i].addEventListener('click', handleAnchorClick) - anchors[i].addEventListener('mousedown', stopPropagation) - anchors[i].addEventListener('mouseup', stopPropagation) - } + Array.prototype.forEach.call(anchors, anchor => { + anchor.addEventListener('click', handleAnchorClick) + anchor.addEventListener('mousedown', stopPropagation) + anchor.addEventListener('mouseup', stopPropagation) + }) + Array.prototype.forEach.call(inputs, input => { + input.addEventListener('click', stopPropagation) + }) } removeListener () { var anchors = ReactDOM.findDOMNode(this).querySelectorAll('a:not(.lineAnchor)') + var inputs = ReactDOM.findDOMNode(this).querySelectorAll('input') - for (var i = 0; i < anchors.length; i++) { - anchors[i].removeEventListener('click', handleAnchorClick) - anchors[i].removeEventListener('mousedown', stopPropagation) - anchors[i].removeEventListener('mouseup', stopPropagation) - } + Array.prototype.forEach.call(anchors, anchor => { + anchor.removeEventListener('click', handleAnchorClick) + anchor.removeEventListener('mousedown', stopPropagation) + anchor.removeEventListener('mouseup', stopPropagation) + }) + Array.prototype.forEach.call(inputs, input => { + input.removeEventListener('click', stopPropagation) + }) } handleClick (e) {