모바일 단말기는 선택 및 강조된 전체 선택 텍스트 이벤트를 구현합니다.
이번에는 전체 선택 텍스트 이벤트를 모바일 단말기에서 구현하기 위한 노트를 가져오겠습니다. 실제 사례를 살펴보겠습니다.
최근 HTML5 WebAPP 페이지에 복사 기능을 구현해야 합니다. 사용자가 텍스트를 클릭하고 길게 누르면 모든 텍스트가 선택되고 사용자가 클릭할 수 있는 시스템 "복사" 메뉴가 나타납니다. "복사"를 눌러 복사 작업을 수행한 후 AppStore에 붙여넣어 해당 애플리케이션을 검색하세요. 해당 AppStore 애플리케이션으로 직접 점프하기 위해 링크 형태를 사용하지 않는 이유는 사용자의 능동적인 키워드 검색 입력을 통해 홍보하는 기업용 App의 비중을 높이기 위함이다. 따라서 이 "복사" 기능은 사용자 경험에 매우 중요합니다.
몇가지 방법을 시도해 보았으나 안드로이드/iOS 플랫폼에서의 호환성이 별로 좋지 않습니다. WeChat 브라우저에서는 텍스트를 길게 눌러 시스템 메뉴를 활성화하고 선택한 모든 텍스트 콘텐츠를 강조표시하는 것이 쉽습니다. 그러나 다른 브라우저의 성능은 그다지 일관적이지 않습니다. 포커스 입력 시뮬레이션, JavaScript 선택 및 태그를 사용하여 시스템 메뉴 활성화를 시도하는 것을 포함합니다. 이러한 방법에는 모두 호환성 결함이 있습니다.
1) UC 브라우저, 바이두 브라우저에서 href 속성이 있는 태그를 사용해 텍스트를 길게 눌러도 "무료 복사"/"텍스트 선택" 메뉴가 나타납니다. 이 메뉴를 선택하면 "모두 선택/복사"가 나타납니다. . 메뉴가 있으나, 일부 안드로이드폰, 아이폰의 시스템 브라우저에서는 순수 링크로 간주되어 '텍스트 복사' 메뉴 없이 '링크 복사'만 팝업되는 현상이 발생하고 있습니다. 게다가, 소수의 브라우저만 가능하다고 생각하더라도 이는 사용자의 작업에 한 단계 더 추가되고 복잡성을 증가시킵니다. 따라서 이 솔루션은 권장되지 않습니다.
2) 선택 및 범위 방법을 사용하려면 다양한 브라우저의 호환성을 고려해야 합니다. 코드는 다음과 같습니다.
function selectText(element) { var doc = document, text = docgetElementById(element), range, selection; if (docbodycreateTextRange) { range = documentbodycreateTextRange(); rangemoveToElementText(text); rangeselect(); } else if (windowgetSelection) { selection = windowgetSelection(); range = documentcreateRange(); rangeselectNodeContents(text); selectionremoveAllRanges(); selectionaddRange(range); /*if(selectionsetBaseAndExtent){ selectionsetBaseAndExtent(text, 0, text, 1); }*/ }else{ alert("none"); } }
안타깝게도 iPhone Safari에서는 여전히 클릭하거나 길게 눌러 모든 텍스트를 강조 표시할 수 없습니다. 또한 window .getSelection을 지원합니다. Safari 브라우저에서 addRange 작업 후 기본적으로 텍스트를 선택할 수 없는 이유를 알고 계시다면 메시지를 남겨주세요. 따라서 이 접근 방식에는 결함이 있습니다. 텍스트 영역을 능동적으로 선택하는 방법은 나중에 첨부합니다.
3) iPhone 사용자는 텍스트 선택 항목에서 텍스트 주위의 빈 영역을 길게 누르면 Safari가 선택 항목의 모든 텍스트를 자동으로 강조 표시하고 선택한다는 것을 알고 있을 것입니다(대상 텍스트는 독립적인 p 블록에 배치되어야 함). 레벨 컨테이너). 이 기능에 따르면 CSS 마진을 사용하여 수정하면 위의 두 번째 방법이 iOS 기기에서 호환되지 않는 문제를 해결할 수 있습니다. 테스트 결과 Android 및 iOS 플랫폼에 관계없이 일반 휴대폰에 제공되는 시스템 브라우저는 호환됩니다. UC 브라우저, 바이두 브라우저 등 타사 모바일 제품의 경우 메커니즘이 다르기 때문에 해당 브라우저 메뉴에서 제공하는 "무료 복사" 기능만 사용할 수 있습니다.
그래서 두 번째와 세 번째 방법을 결합하고 jQuery 모바일에서 taphold 이벤트를 사용하여 모바일 시스템의 복사 메뉴를 트리거하는 롱탭 작업을 시뮬레이션했습니다. 이는 기본적으로 모든 모바일 장치 브라우저에서 텍스트 영역을 길게 눌러 구현할 수 있습니다. 모든 텍스트 내용을 강조 표시합니다. 한 가지 더, Taphold의 호환 가능한 버그는 여기에 자세히 설명되어 있지 않으며, 프로젝트에 우수성이 필요한 경우 솔루션을 직접 검색할 수 있습니다.
내 솔루션은 다음과 같습니다. 구체적인 코드는 다음과 같습니다.
HTML 코드:
<p class=" para requirement"> <p class="tips tips-t"> 1、必须首次下载才生效<br/> 2、不能从排行榜下载哦 </p> <p class="cparea"> <p class="kwd" id="kwd"><span>三国艳义手机优化大师</span></p> </p> <p class="cparea"> <span class="kdes"><b>★</b>长按虚线框,拷贝关键词</span> </p> <a href="https://itunesapplecom/cn/" data-role="button" class="downlink">去AppStore搜索下载</a> </p>
JavaScript 코드:
<script type="text/javascript"> $("#kwd")bind("taphold", function(){ //不支持iPhone/iTouch/iPad Safari var doc = document, text = docgetElementById("kwd"), range, selection; if (docbodycreateTextRange) { range = documentbodycreateTextRange(); rangemoveToElementText(text); rangeselect(); } else if (windowgetSelection) { selection = windowgetSelection(); range = documentcreateRange(); rangeselectNodeContents(text); selectionremoveAllRanges(); selectionaddRange(range); }else{ alert("浏览器不支持长按复制功能"); } }); </script>
핵심 CSS 코드:
cparea{ text-align: center; font-family: Microsoft Yahei; margin: -2em 0 0; } kwd{ display: inline-block; color: #272727; background-color: #fff; font-size: 1875em; font-size: 1875em; padding: 75em 1em; border: 1px dashed #e60012; -webkit-user-select:element; margin: 2em; } kwd span{ display: block; border: 1px solid #fff; } kdes{ display: inline-block; color: #212121; font-size: 875em; padding-top: 0; } kdes b{ color: #ed5353; font-size: 25em; padding-right: 1em; }
설명: 여백: 2em은 Safari 브라우저에서 길게 누르기 모든 기능 선택을 정확하게 구현하기 위한 것입니다. 존중하지 않고 디자인 초안 효과를 복원하기 위해 상위 컨테이너 .cparea는 음수 여백을 사용하여 2em 여백을 상쇄합니다. 결국 설계 도면과 시각적으로 일관되게 되었을 뿐만 아니라, 길게 눌러 전체 선택이 가능하도록 하여 시스템 메뉴를 활성화할 수 있게 되었습니다.
마지막으로 Safari를 지원하는 완전한 방법을 추가하겠습니다.
$("#kwd").bind("taphold", function(){ var doc = document, text = docgetElementById("kwd"), range, selection; if (docbodycreateTextRange) { //IE range = documentbodycreateTextRange(); rangemoveToElementText(text); rangeselect(); } else if (windowgetSelection) { //FF CH SF selection = windowgetSelection(); range = documentcreateRange(); rangeselectNodeContents(text); selectionremoveAllRanges(); selectionaddRange(range); //测试 consolelog(texttextContent); textinnerText && consolelog(textinnerText); //FireFox不支持innerText consolelog(texttextContentlength); textinnerText && consolelog(textinnerTextlength); //在Chrome下长度比IE/FF下多1 consolelog(textfirstChildtextContentlength); textinnerText && consolelog(textfirstChildinnerTextlength); consolelog(textfirstChildinnerHTMLlength); //注意IE9-不支持textContent makeSelection(0, textfirstChildtextContentlength, 0, textfirstChild); /* if(selectionsetBaseAndExtent){ selectionselectAllChildren(text); selectionsetBaseAndExtent(text, 0, text, 4); } */ }else{ alert("浏览器不支持长按复制功能"); } }); function makeSelection(start, end, child, parent) { var range = documentcreateRange(); //consolelog(parentchildNodes[child]); rangesetStart(parentchildNodes[child], start); rangesetEnd(parentchildNodes[child], end); var sel = windowgetSelection(); selremoveAllRanges(); seladdRange(range); }
이 기사의 사례를 읽으신 후 이 방법을 마스터하셨다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사에 주목하세요!
추천 도서:
위 내용은 모바일 단말기는 선택 및 강조된 전체 선택 텍스트 이벤트를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Huawei 휴대폰에서 이중 WeChat 로그인을 구현하는 방법은 무엇입니까? 소셜 미디어의 등장으로 WeChat은 사람들의 일상 생활에 없어서는 안될 커뮤니케이션 도구 중 하나가 되었습니다. 그러나 많은 사람들이 동일한 휴대폰에서 동시에 여러 WeChat 계정에 로그인하는 문제에 직면할 수 있습니다. Huawei 휴대폰 사용자의 경우 듀얼 WeChat 로그인을 달성하는 것은 어렵지 않습니다. 이 기사에서는 Huawei 휴대폰에서 듀얼 WeChat 로그인을 달성하는 방법을 소개합니다. 우선, 화웨이 휴대폰과 함께 제공되는 EMUI 시스템은 듀얼 애플리케이션 열기라는 매우 편리한 기능을 제공합니다. 앱 듀얼 오픈 기능을 통해 사용자는 동시에

Java 코드를 통해 사랑 애니메이션 효과 구현하기 프로그래밍 분야에서 애니메이션 효과는 매우 일반적이고 대중적입니다. Java 코드를 통해 다양한 애니메이션 효과를 얻을 수 있는데, 그 중 하나가 하트 애니메이션 효과입니다. 이 기사에서는 Java 코드를 사용하여 이러한 효과를 얻는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 하트 애니메이션 효과 구현의 핵심은 하트 모양의 패턴을 그린 후, 하트 모양의 위치와 색상을 변경하여 애니메이션 효과를 구현하는 것입니다. 다음은 간단한 예에 대한 코드입니다: importjavax.swing.

프로그래밍 언어 PHP는 다양한 프로그래밍 논리와 알고리즘을 지원할 수 있는 강력한 웹 개발 도구입니다. 그중 피보나치 수열을 구현하는 것은 일반적이고 고전적인 프로그래밍 문제입니다. 이 기사에서는 PHP 프로그래밍 언어를 사용하여 피보나치 수열을 구현하는 방법을 소개하고 구체적인 코드 예제를 첨부합니다. 피보나치 수열은 다음과 같이 정의되는 수학적 수열입니다. 수열의 첫 번째와 두 번째 요소는 1이고 세 번째 요소부터 시작하여 각 요소의 값은 이전 두 요소의 합과 같습니다. 시퀀스의 처음 몇 가지 요소

Huawei 휴대폰에서 WeChat 복제 기능을 구현하는 방법 소셜 소프트웨어의 인기와 개인 정보 보호 및 보안에 대한 사람들의 강조가 높아지면서 WeChat 복제 기능이 점차 주목을 받고 있습니다. WeChat 복제 기능을 사용하면 사용자가 동일한 휴대폰에서 여러 WeChat 계정에 동시에 로그인할 수 있으므로 관리 및 사용이 더 쉬워집니다. Huawei 휴대폰에서 WeChat 복제 기능을 구현하는 것은 어렵지 않습니다. 다음 단계만 따르면 됩니다. 1단계: 휴대폰 시스템 버전과 WeChat 버전이 요구 사항을 충족하는지 확인하십시오. 먼저 Huawei 휴대폰 시스템 버전과 WeChat 앱이 최신 버전으로 업데이트되었는지 확인하세요.

"개발 제안: ThinkPHP 프레임워크를 사용하여 비동기 작업을 구현하는 방법" 인터넷 기술의 급속한 발전으로 인해 웹 응용 프로그램은 많은 수의 동시 요청과 복잡한 비즈니스 논리를 처리하기 위한 요구 사항이 점점 더 높아졌습니다. 시스템 성능과 사용자 경험을 향상시키기 위해 개발자는 이메일 보내기, 파일 업로드 처리, 보고서 생성 등과 같이 시간이 많이 걸리는 작업을 수행하기 위해 비동기 작업을 사용하는 것을 종종 고려합니다. PHP 분야에서 널리 사용되는 개발 프레임워크인 ThinkPHP 프레임워크는 비동기 작업을 구현하는 몇 가지 편리한 방법을 제공합니다.

오늘날의 소프트웨어 개발 분야에서 효율적이고 간결하며 동시성이 뛰어난 프로그래밍 언어인 Golang(Go 언어)은 점점 더 개발자들의 선호를 받고 있습니다. 풍부한 표준 라이브러리와 효율적인 동시성 기능으로 인해 게임 개발 분야에서 주목받는 선택이 되었습니다. 이 기사에서는 게임 개발에 Golang을 사용하는 방법을 살펴보고 특정 코드 예제를 통해 Golang의 강력한 가능성을 보여줍니다. 1. 게임 개발에서 Golang의 장점 Golang은 정적인 유형의 언어로서 대규모 게임 시스템을 구축하는 데 사용됩니다.

PHP 게임 요구사항 구현 가이드 인터넷의 대중화와 발전으로 인해 웹 게임 시장이 점점 더 대중화되고 있습니다. 많은 개발자는 PHP 언어를 사용하여 자신만의 웹 게임을 개발하기를 원하며 게임 요구 사항을 구현하는 것이 핵심 단계입니다. 이 문서에서는 PHP 언어를 사용하여 일반적인 게임 요구 사항을 구현하는 방법을 소개하고 특정 코드 예제를 제공합니다. 1. 게임 캐릭터 만들기 웹게임에서 게임 캐릭터는 매우 중요한 요소입니다. 이름, 레벨, 경험치 등 게임 캐릭터의 속성을 정의하고, 이를 운용할 수 있는 방법을 제공해야 합니다.

Golang에서 정확한 나눗셈 작업을 구현하는 것은 특히 재무 계산과 관련된 시나리오 또는 고정밀 계산이 필요한 기타 시나리오에서 일반적인 요구 사항입니다. Golang에 내장된 나눗셈 연산자 "/"는 부동 소수점 수에 대해 계산되며 때로는 정밀도가 손실되는 문제가 있습니다. 이 문제를 해결하기 위해 타사 라이브러리나 사용자 정의 기능을 사용하여 정확한 분할 작업을 구현할 수 있습니다. 일반적인 접근 방식은 분수 표현을 제공하고 정확한 나눗셈 연산을 구현하는 데 사용할 수 있는 math/big 패키지의 Rat 유형을 사용하는 것입니다.
