mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-18 09:35:20 +02:00
9289dbdf77
* Refactoring MdToHtml to avoid manually rendering tokens * Minor fix * Fixed loading of resources * Handle clicking on checkboxes * Added back Katex support * Fixed issues with Katex and note rendering * Added back support for links * Restored code block highlighting support * clean up * Applying update to mobile * Fixed handling of links and cleaned up to share more code between mobile and desktop * Restored content caching and improved handling of additional assets * Clean up and a few fixes * Applied more updates to mobile and added code highlighting support
54 lines
1.5 KiB
JavaScript
54 lines
1.5 KiB
JavaScript
const webviewLib = {};
|
|
|
|
webviewLib.handleInternalLink = function(event, anchorNode) {
|
|
const href = anchorNode.getAttribute('href');
|
|
if (href.indexOf('#') === 0) {
|
|
event.preventDefault();
|
|
location.hash = href;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
webviewLib.getParentAnchorElement = function(element) {
|
|
let counter = 0;
|
|
while (true) {
|
|
|
|
if (counter++ >= 10000) {
|
|
console.warn('been looping for too long - exiting')
|
|
return null;
|
|
}
|
|
|
|
if (!element) return null;
|
|
if (element.nodeName === 'A') return element;
|
|
element = element.parentElement;
|
|
}
|
|
}
|
|
|
|
webviewLib.initialize = function(options) {
|
|
webviewLib.options_ = options;
|
|
}
|
|
|
|
document.addEventListener('click', function(event) {
|
|
const anchor = webviewLib.getParentAnchorElement(event.target);
|
|
if (!anchor) return;
|
|
|
|
// Prevent URLs added via <a> tags from being opened within the application itself
|
|
// otherwise it would open the whole website within the WebView.
|
|
|
|
// Note that we already handle some links in html_inline.js, however not all of them
|
|
// go through this plugin, in particular links coming from third-party packages such
|
|
// as Katex.
|
|
if (!anchor.hasAttribute('data-from-md')) {
|
|
if (webviewLib.handleInternalLink(event, anchor)) return;
|
|
|
|
event.preventDefault();
|
|
webviewLib.options_.postMessage(anchor.getAttribute('href'));
|
|
return;
|
|
}
|
|
|
|
// If this is an internal link, jump to the anchor directly
|
|
if (anchor.hasAttribute('data-from-md')) {
|
|
if (webviewLib.handleInternalLink(event, anchor)) return;
|
|
}
|
|
}); |