mirror of
https://github.com/wassname/chatGPTBox.git
synced 2026-07-07 01:06:53 +08:00
feat: improve mobile support
This commit is contained in:
@@ -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()
|
||||
}
|
||||
|
||||
@@ -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,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 (
|
||||
|
||||
Reference in New Issue
Block a user