diff --git a/core/browser.py b/core/browser.py index dc58e54..a6c6703 100644 --- a/core/browser.py +++ b/core/browser.py @@ -542,16 +542,25 @@ class BrowserBuffer(Buffer): return self.buffer_widget.get_url() def open_link(self): - self.buffer_widget.get_link_markers() - self.send_input_message("Open Link: ", "jump_link"); + linkState = self.buffer_widget.get_link_markers() + if linkState == "complete": + self.send_input_message("Open Link: ", "jump_link"); + else: + self.message_to_emacs.emit("Webpage is not ready") def open_link_new_buffer(self): - self.buffer_widget.get_link_markers() - self.send_input_message("Open Link in New Buffer: ", "jump_link_new_buffer"); + linkState = self.buffer_widget.get_link_markers() + if linkState == "complete": + self.send_input_message("Open Link in New Buffer: ", "jump_link_new_buffer"); + else: + self.message_to_emacs.emit("Webpage is not ready") def open_link_background_buffer(self): - self.buffer_widget.get_link_markers() - self.send_input_message("Open Link in Background Buffer: ", "jump_link_background_buffer"); + linkState = self.buffer_widget.get_link_markers() + if linkState == "complete": + self.send_input_message("Open Link in Background Buffer: ", "jump_link_background_buffer"); + else: + self.message_to_emacs.emit("Webpage is not ready") def reset_default_zoom(self): if hasattr(self, "buffer_widget"): diff --git a/core/js/get_markers.js b/core/js/get_markers.js index a82992e..24b1910 100644 --- a/core/js/get_markers.js +++ b/core/js/get_markers.js @@ -93,29 +93,32 @@ } } - let validRects = []; - addElementToRects(validRects, document.links); // collect links - addElementToRects(validRects, document.querySelectorAll('input')); // collect inputs - addElementToRects(validRects, document.querySelectorAll('button')); // collect buttons - addElementToRects(validRects, document.querySelectorAll('[class*="btn"]')); // collect btn buttons - addElementToRects(validRects, document.querySelectorAll('[aria-haspopup]')); // collect menu buttons - addElementToRects(validRects, document.querySelectorAll('[role="button"]')); // collect role="button" - addElementToRects(validRects, document.querySelectorAll('textarea')); // collect textarea + if(document.readyState === 'complete'){ + let validRects = []; + addElementToRects(validRects, document.links); // collect links + addElementToRects(validRects, document.querySelectorAll('input')); // collect inputs + addElementToRects(validRects, document.querySelectorAll('button')); // collect buttons + addElementToRects(validRects, document.querySelectorAll('[class*="btn"]')); // collect btn buttons + addElementToRects(validRects, document.querySelectorAll('[aria-haspopup]')); // collect menu buttons + addElementToRects(validRects, document.querySelectorAll('[role="button"]')); // collect role="button" + addElementToRects(validRects, document.querySelectorAll('textarea')); // collect textarea - let body = document.querySelector('body'); - let markerContainer = document.createElement('div'); - markerContainer.setAttribute('class', 'markerContainer'); - body.insertAdjacentElement('afterend', markerContainer); - for(let i = 0; i < validRects.length; i++) { - let marker = document.createElement('div'); - marker.setAttribute('class', 'marker'); - marker.setAttribute('style', 'left: ' + - validRects[i][1] + 'px; top: ' + - validRects[i][0] + 'px; z-index: 100000; position: fixed; ' + - ' background-color: #ffdb60; border: 1px solid #c38a22; padding-left: 3px; padding-right: 3px; border-radius: 3px;'); - marker.setAttribute('pointed-link', validRects[i][4]); + let body = document.querySelector('body'); + let markerContainer = document.createElement('div'); + markerContainer.setAttribute('class', 'markerContainer'); + body.insertAdjacentElement('afterend', markerContainer); + for(let i = 0; i < validRects.length; i++) { + let marker = document.createElement('div'); + marker.setAttribute('class', 'marker'); + marker.setAttribute('style', 'left: ' + + validRects[i][1] + 'px; top: ' + + validRects[i][0] + 'px; z-index: 100000; position: fixed; ' + + ' background-color: #ffdb60; border: 1px solid #c38a22; padding-left: 3px; padding-right: 3px; border-radius: 3px;'); + marker.setAttribute('pointed-link', validRects[i][4]); - markerContainer.appendChild(marker); + markerContainer.appendChild(marker); + } + generateKeys(markerContainer); } - generateKeys(markerContainer); + return document.readyState; })();