Split open new tab url javascript to single js file.

master
Andy Stewart 7 years ago
parent 0b356fbf27
commit ff26b27448
  1. 58
      core/browser.py
  2. 56
      core/javascript/open_in_new_tab.js

@ -164,62 +164,8 @@ class WebHitTestResult():
self.m_linkUrl = self.page.url().toString()
self.m_baseUrl = self.page.url().toString()
self.viewportPos = self.page.mapToViewport(self.pos)
self.source = """(function() {
let e = document.elementFromPoint(%1, %2);
if (!e)
return;
function isMediaElement(e) {
return e.tagName == 'AUDIO' || e.tagName == 'VIDEO';
};
function isEditableElement(e) {
if (e.isContentEditable)
return true;
if (e.tagName === 'INPUT' || e.tagName === 'TEXTAREA')
return e.getAttribute('readonly') != 'readonly';
return false;
};
function isSelected(e) {
let selection = window.getSelection();
if (selection.type !== 'Range')
return false;
return window.getSelection().containsNode(e, true);
};
let res = {
baseUrl: document.baseURI,
alternateText: e.getAttribute('alt'),
boundingRect: '',
imageUrl: '',
contentEditable: isEditableElement(e),
contentSelected: isSelected(e),
linkTitle: '',
linkUrl: '',
mediaUrl: '',
tagName: e.tagName.toLowerCase()
};
let r = e.getBoundingClientRect();
res.boundingRect = [r.top, r.left, r.width, r.height];
if (e.tagName == 'IMG')
res.imageUrl = e.getAttribute('src');
if (e.tagName == 'A') {
res.linkTitle = e.text;
res.linkUrl = e.getAttribute('href');
}
while (e) {
if (res.linkTitle === '' && e.tagName === 'A') {
res.linkTitle = e.text;
if(res.linkUrl === '') {
res.linkUrl = e.getAttribute('href');
}
}
if (res.mediaUrl === '' && isMediaElement(e)) {
res.mediaUrl = e.currentSrc;
res.mediaPaused = e.paused;
res.mediaMuted = e.muted;
}
e = e.parentElement;
}
return res;
})()"""
with open("./javascript/open_in_new_tab.js", 'r') as f:
self.source = f.read()
self.js = self.source.replace("%1", str(self.viewportPos.x())).replace("%2", str(self.viewportPos.y()))
self.dic = self.page.executeJavaScript(self.js)

@ -0,0 +1,56 @@
(function() {
let e = document.elementFromPoint(%1, %2);
if (!e)
return;
function isMediaElement(e) {
return e.tagName == 'AUDIO' || e.tagName == 'VIDEO';
};
function isEditableElement(e) {
if (e.isContentEditable)
return true;
if (e.tagName === 'INPUT' || e.tagName === 'TEXTAREA')
return e.getAttribute('readonly') != 'readonly';
return false;
};
function isSelected(e) {
let selection = window.getSelection();
if (selection.type !== 'Range')
return false;
return window.getSelection().containsNode(e, true);
};
let res = {
baseUrl: document.baseURI,
alternateText: e.getAttribute('alt'),
boundingRect: '',
imageUrl: '',
contentEditable: isEditableElement(e),
contentSelected: isSelected(e),
linkTitle: '',
linkUrl: '',
mediaUrl: '',
tagName: e.tagName.toLowerCase()
};
let r = e.getBoundingClientRect();
res.boundingRect = [r.top, r.left, r.width, r.height];
if (e.tagName == 'IMG')
res.imageUrl = e.getAttribute('src');
if (e.tagName == 'A') {
res.linkTitle = e.text;
res.linkUrl = e.getAttribute('href');
}
while (e) {
if (res.linkTitle === '' && e.tagName === 'A') {
res.linkTitle = e.text;
if(res.linkUrl === '') {
res.linkUrl = e.getAttribute('href');
}
}
if (res.mediaUrl === '' && isMediaElement(e)) {
res.mediaUrl = e.currentSrc;
res.mediaPaused = e.paused;
res.mediaMuted = e.muted;
}
e = e.parentElement;
}
return res;
})()
Loading…
Cancel
Save