diff --git a/src/content-script/index.jsx b/src/content-script/index.jsx index 25b1030..68a4be3 100644 --- a/src/content-script/index.jsx +++ b/src/content-script/index.jsx @@ -138,6 +138,45 @@ async function prepareForSelectionTools() { }) } +async function prepareForSelectionToolsTouch() { + document.addEventListener('touchend', (e) => { + if (toolbarContainer && toolbarContainer.contains(e.target)) return + if ( + toolbarContainer && + window.getSelection()?.rangeCount > 0 && + toolbarContainer.contains(window.getSelection()?.getRangeAt(0).endContainer.parentElement) + ) + return + + if (toolbarContainer) toolbarContainer.remove() + setTimeout(() => { + const selection = window.getSelection()?.toString() + if (selection) { + const position = { + x: e.changedTouches[0].clientX + 15, + y: e.changedTouches[0].clientY - 15, + } + toolbarContainer = createElementAtPosition(position.x, position.y) + toolbarContainer.className = 'toolbar-container' + render( + , + toolbarContainer, + ) + } + }) + }) + document.addEventListener('touchstart', (e) => { + if (toolbarContainer && toolbarContainer.contains(e.target)) return + + document.querySelectorAll('.toolbar-container').forEach((e) => e.remove()) + }) +} + let menuX, menuY async function prepareForRightClickMenu() { @@ -220,6 +259,7 @@ async function run() { userConfig = await getUserConfig() if (isSafari()) await prepareForSafari() prepareForSelectionTools() + prepareForSelectionToolsTouch() prepareForStaticCard() prepareForRightClickMenu() } diff --git a/src/content-script/site-adapters/index.mjs b/src/content-script/site-adapters/index.mjs index 642bc11..82023ac 100644 --- a/src/content-script/site-adapters/index.mjs +++ b/src/content-script/site-adapters/index.mjs @@ -144,9 +144,9 @@ export const config = { }, zhihu: { inputQuery: zhihu.inputQuery, - sidebarContainerQuery: ['.Question-sideColumn', '.Post-Header'], + sidebarContainerQuery: ['.Question-sideColumn', '.Post-Header', '.Question-main'], appendContainerQuery: [], - resultsContainerQuery: ['.Question-sideColumn', '.Post-Header'], + resultsContainerQuery: ['.Question-sideColumn', '.Post-Header', '.Question-main'], }, reddit: { inputQuery: reddit.inputQuery, diff --git a/src/utils/is-mobile.mjs b/src/utils/is-mobile.mjs index 39c30a3..be3e1fa 100644 --- a/src/utils/is-mobile.mjs +++ b/src/utils/is-mobile.mjs @@ -1,6 +1,7 @@ // https://stackoverflow.com/questions/11381673/detecting-a-mobile-browser export async function isMobile() { + if (navigator.userAgentData) return navigator.userAgentData.mobile let check = false ;(function (a) { if (