feat: improve mobile support

This commit is contained in:
josc146
2023-03-16 20:26:11 +08:00
parent 7347dff40c
commit e17c810a93
3 changed files with 43 additions and 2 deletions
+40
View File
@@ -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(
<FloatingToolbar
session={initSession()}
selection={selection}
position={position}
container={toolbarContainer}
/>,
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()
}
+2 -2
View File
@@ -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,
+1
View File
@@ -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 (