Add support for getting the document title
This commit is contained in:
parent
199b926f23
commit
696897f6fa
@ -162,6 +162,33 @@ class DisplayFloat extends Display {
|
||||
setContentScale(scale) {
|
||||
document.body.style.fontSize = `${scale}em`;
|
||||
}
|
||||
|
||||
async getDocumentTitle() {
|
||||
try {
|
||||
const uniqueId = yomichan.generateId(16);
|
||||
|
||||
const promise = yomichan.getTemporaryListenerResult(
|
||||
chrome.runtime.onMessage,
|
||||
({action, params}, {resolve}) => {
|
||||
if (
|
||||
action === 'documentInformationBroadcast' &&
|
||||
isObject(params) &&
|
||||
params.uniqueId === uniqueId &&
|
||||
params.frameId === 0
|
||||
) {
|
||||
resolve(params);
|
||||
}
|
||||
},
|
||||
2000
|
||||
);
|
||||
apiForward('requestDocumentInformationBroadcast', {uniqueId});
|
||||
|
||||
const {title} = await promise;
|
||||
return title;
|
||||
} catch (e) {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DisplayFloat.instance = new DisplayFloat();
|
||||
|
@ -54,7 +54,8 @@ class Frontend extends TextScanner {
|
||||
|
||||
this._runtimeMessageHandlers = new Map([
|
||||
['popupSetVisibleOverride', ({visible}) => { this.popup.setVisibleOverride(visible); }],
|
||||
['rootPopupRequestInformationBroadcast', () => { this._broadcastRootPopupInformation(); }]
|
||||
['rootPopupRequestInformationBroadcast', () => { this._broadcastRootPopupInformation(); }],
|
||||
['requestDocumentInformationBroadcast', ({uniqueId}) => { this._broadcastDocumentInformation(uniqueId); }]
|
||||
]);
|
||||
}
|
||||
|
||||
@ -264,6 +265,14 @@ class Frontend extends TextScanner {
|
||||
}
|
||||
}
|
||||
|
||||
_broadcastDocumentInformation(uniqueId) {
|
||||
apiForward('documentInformationBroadcast', {
|
||||
uniqueId,
|
||||
frameId: this.popup.frameId,
|
||||
title: document.title
|
||||
});
|
||||
}
|
||||
|
||||
async _updatePopupPosition() {
|
||||
const textSource = this.getCurrentTextSource();
|
||||
if (textSource !== null && await this.popup.isVisible()) {
|
||||
|
Loading…
Reference in New Issue
Block a user