Heim Web-Frontend H5-Tutorial Das mobile Terminal führt die Auswahl durch und hebt alle ausgewählten Textereignisse hervor

Das mobile Terminal führt die Auswahl durch und hebt alle ausgewählten Textereignisse hervor

Mar 26, 2018 am 11:44 AM
实现 ausgewählt Hervorheben

Dieses Mal zeige ich Ihnen das Ereignis zum Auswählen und Hervorheben des gesamten ausgewählten Textes auf dem mobilen Endgerät ist ein praktischer Fall, werfen wir einen Blick darauf. Kürzlich müssen wir eine Kopierfunktion auf der Seite für HTML5 WebAPP implementieren: Wenn der Benutzer auf den Text klickt und ihn lange drückt, wird der gesamte Text ausgewählt und das Systemmenü „Kopieren“ wird angezeigt. Der Benutzer kann auf „Kopieren“ klicken, um den Kopiervorgang durchzuführen, und ihn dann in „Suche im AppStore“ nach der entsprechenden Anwendung einfügen. Der Grund dafür, dass das Linkformular nicht verwendet wird, um direkt zur entsprechenden AppStore-Anwendung zu springen, besteht darin, das Gewicht der beworbenen Unternehmens-App durch die aktive Eingabe von Schlüsselwortsuchen durch den Benutzer zu erhöhen. Daher ist diese „Kopieren“-Funktion für das Benutzererlebnis von entscheidender Bedeutung.

Ich habe einige Methoden ausprobiert, aber die Kompatibilität auf der Android/iOS-Plattform ist nicht sehr gut. Im WeChat-Browser ist es einfach, lange auf Text zu drücken, um das Systemmenü zu aktivieren und alle ausgewählten Textinhalte hervorzuheben. Allerdings ist die Leistung in anderen Browsern nicht sehr konsistent. Einschließlich der Simulation der Fokuseingabe, der

JavaScript

-Auswahl und der Verwendung des a-Tags, um zu versuchen, das Systemmenü zu aktivieren. Diese Methoden weisen alle Kompatibilitätsmängel auf. 1) Obwohl Sie das a-Tag mit dem href-Attribut verwenden und lange auf den Text im UC-Browser und Baidu-Browser drücken, erscheint das Menü „Kostenlose Kopie“/„Text auswählen“. Es erscheint das Menü „Auswählen/Kopieren“, aber in den Systembrowsern einiger Android-Telefone und iPhones wird es als reiner Link betrachtet und es erscheint nur „Link kopieren“ ohne das Menü „Text kopieren“. Selbst wenn nur eine kleine Anzahl von Browsern als machbar angesehen wird, bedeutet dies, dass die Bedienung des Benutzers um einen weiteren Schritt erweitert und die Komplexität erhöht wird. Daher ist diese Lösung nicht ratsam.

2) Bei der Verwendung von Auswahl und Bereich muss die Kompatibilität verschiedener Browser berücksichtigt werden. Der Code lautet wie folgt:

Leider ist das Klicken immer noch nicht möglich oder lange auf iPhone Safari drücken. Markieren Sie den gesamten Text (da window.getSelection auch unterstützt wird, warum kann der Text nach dem addRange-Vorgang in Safari nicht standardmäßig ausgewählt werden? Wenn Sie den Grund kennen, hinterlassen Sie bitte eine Nachricht). Daher ist dieser Ansatz fehlerhaft. Die Methode zur aktiven Auswahl eines Textbereichs wird später angehängt.
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");  
  }  
}
Nach dem Login kopieren

3) iPhone-Benutzer wissen möglicherweise, dass Safari automatisch den gesamten Text in der Auswahl hervorhebt und auswählt, wenn Sie lange auf den leeren Bereich um den Text in einer Textauswahl drücken (der Zieltext muss in einem platziert werden). unabhängiger p-Container auf Blockebene). Verwenden Sie gemäß dieser Funktion die CSS-Marge, um sie zu ändern. Mit dieser Funktion können Sie die Inkompatibilität der zweiten Methode oben auf iOS-Geräten beheben. Nach dem Test sind die Systembrowser, die mit allgemeinen Mobiltelefonen geliefert werden, unabhängig von der Android- und iOS-Plattform kompatibel. Bei mobilen Produkten anderer Hersteller wie UC Browser und Baidu Browser können Sie aufgrund unterschiedlicher Mechanismen nur die Funktion „Kostenloses Kopieren“ nutzen, die in diesen Browsermenüs bereitgestellt wird.

Also habe ich die zweite und dritte Methode kombiniert und das Taphold-Ereignis in jQuery Mobile verwendet, um den Longtap-Vorgang zu simulieren, um das Kopiermenü des mobilen Systems auszulösen Sie können lange auf den Textbereich drücken, um den gesamten Textinhalt hervorzuheben. Eine weitere Sache: Die kompatiblen Fehler von taphold werden hier nicht detailliert beschrieben und die Lösungen sind nicht enthalten. Wenn Ihr Projekt Exzellenz erfordert, können Sie selbst nach Lösungen suchen.

Meine Lösung ist unten aufgeführt. Der spezifische Code lautet wie folgt:

HTML-Code:

JavaScript-Code:
<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>
Nach dem Login kopieren

Schlüssel-CSS-Code:
 <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>
Nach dem Login kopieren

Anleitung: Der Rand hier: 2em dient genau dazu, die Funktion „Alles auswählen“ im Safari-Browser durch langes Drücken zu realisieren. Um den Effekt der Wiederherstellung des Designentwurfs zu berücksichtigen, verwendet der übergeordnete Container .cparea negative Ränder, um den äußeren Rand dieses 2em auszugleichen . Am Ende stimmte es nicht nur optisch mit der Konstruktionszeichnung überein, sondern ermöglichte auch, durch langes Drücken alles auszuwählen, um das Systemmenü zu aktivieren.
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;  
}
Nach dem Login kopieren

Lassen Sie mich abschließend die vollständige Methode zur Unterstützung von Safari hinzufügen:

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen erhalten Sie zu anderen verwandten Artikeln auf der chinesischen PHP-Website!
$("#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);   
}
Nach dem Login kopieren

Empfohlene Lektüre:

Detaillierte Erläuterung der Verwendung datumsbezogener Funktionen in JS


Detaillierte Erläuterung der Verwendung von faltbaren Paneelen in JS

Das obige ist der detaillierte Inhalt vonDas mobile Terminal führt die Auswahl durch und hebt alle ausgewählten Textereignisse hervor. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie implementiert man die doppelte WeChat-Anmeldung auf Huawei-Mobiltelefonen? Wie implementiert man die doppelte WeChat-Anmeldung auf Huawei-Mobiltelefonen? Mar 24, 2024 am 11:27 AM

Wie implementiert man die doppelte WeChat-Anmeldung auf Huawei-Mobiltelefonen? Mit dem Aufkommen der sozialen Medien ist WeChat zu einem unverzichtbaren Kommunikationsmittel im täglichen Leben der Menschen geworden. Viele Menschen können jedoch auf ein Problem stoßen: Sie können sich gleichzeitig auf demselben Mobiltelefon bei mehreren WeChat-Konten anmelden. Für Huawei-Mobiltelefonbenutzer ist es nicht schwierig, eine doppelte WeChat-Anmeldung zu erreichen. In diesem Artikel wird erläutert, wie eine doppelte WeChat-Anmeldung auf Huawei-Mobiltelefonen erreicht wird. Erstens bietet das EMUI-System, das mit Huawei-Mobiltelefonen geliefert wird, eine sehr praktische Funktion – das doppelte Öffnen von Anwendungen. Durch die doppelte Öffnungsfunktion der Anwendung können Benutzer gleichzeitig

Verwenden Sie Java, um Code zur Implementierung von Liebesanimationen zu schreiben Verwenden Sie Java, um Code zur Implementierung von Liebesanimationen zu schreiben Dec 23, 2023 pm 12:09 PM

Liebesanimationseffekte durch Java-Code realisieren Im Bereich der Programmierung sind Animationseffekte sehr verbreitet und beliebt. Mit Java-Code können verschiedene Animationseffekte erzielt werden, darunter der Herzanimationseffekt. In diesem Artikel wird erläutert, wie Sie mithilfe von Java-Code diesen Effekt erzielen, und es werden spezifische Codebeispiele aufgeführt. Der Schlüssel zum Realisieren des Herzanimationseffekts besteht darin, das herzförmige Muster zu zeichnen und den Animationseffekt durch Ändern der Position und Farbe der Herzform zu erzielen. Hier ist der Code für ein einfaches Beispiel: importjavax.swing.

PHP-Programmierhandbuch: Methoden zur Implementierung der Fibonacci-Folge PHP-Programmierhandbuch: Methoden zur Implementierung der Fibonacci-Folge Mar 20, 2024 pm 04:54 PM

Die Programmiersprache PHP ist ein leistungsstarkes Werkzeug für die Webentwicklung, das eine Vielzahl unterschiedlicher Programmierlogiken und Algorithmen unterstützen kann. Unter diesen ist die Implementierung der Fibonacci-Folge ein häufiges und klassisches Programmierproblem. In diesem Artikel stellen wir vor, wie Sie die Fibonacci-Folge mit der Programmiersprache PHP implementieren, und fügen spezifische Codebeispiele bei. Die Fibonacci-Folge ist eine mathematische Folge, die wie folgt definiert ist: Das erste und das zweite Element der Folge sind 1, und ab dem dritten Element ist der Wert jedes Elements gleich der Summe der beiden vorherigen Elemente. Die ersten paar Elemente der Sequenz

So implementieren Sie die WeChat-Klonfunktion auf Huawei-Mobiltelefonen So implementieren Sie die WeChat-Klonfunktion auf Huawei-Mobiltelefonen Mar 24, 2024 pm 06:03 PM

So implementieren Sie die WeChat-Klonfunktion auf Huawei-Mobiltelefonen Mit der Popularität sozialer Software und der zunehmenden Bedeutung von Datenschutz und Sicherheit rückt die WeChat-Klonfunktion allmählich in den Mittelpunkt der Aufmerksamkeit der Menschen. Die WeChat-Klonfunktion kann Benutzern helfen, sich gleichzeitig bei mehreren WeChat-Konten auf demselben Mobiltelefon anzumelden, was die Verwaltung und Nutzung erleichtert. Es ist nicht schwierig, die WeChat-Klonfunktion auf Huawei-Mobiltelefonen zu implementieren. Sie müssen lediglich die folgenden Schritte ausführen. Schritt 1: Stellen Sie sicher, dass die Version Ihres Mobiltelefonsystems und die WeChat-Version den Anforderungen entsprechen. Stellen Sie zunächst sicher, dass die Version Ihres Huawei-Mobiltelefonsystems sowie die WeChat-App auf die neueste Version aktualisiert wurden.

Entwicklungsvorschläge: So verwenden Sie das ThinkPHP-Framework zur Implementierung asynchroner Aufgaben Entwicklungsvorschläge: So verwenden Sie das ThinkPHP-Framework zur Implementierung asynchroner Aufgaben Nov 22, 2023 pm 12:01 PM

„Entwicklungsvorschläge: So verwenden Sie das ThinkPHP-Framework zur Implementierung asynchroner Aufgaben“ Mit der rasanten Entwicklung der Internettechnologie stellen Webanwendungen immer höhere Anforderungen an die Verarbeitung einer großen Anzahl gleichzeitiger Anforderungen und komplexer Geschäftslogik. Um die Systemleistung und das Benutzererlebnis zu verbessern, erwägen Entwickler häufig die Verwendung asynchroner Aufgaben, um einige zeitaufwändige Vorgänge auszuführen, z. B. das Senden von E-Mails, das Verarbeiten von Datei-Uploads, das Erstellen von Berichten usw. Im Bereich PHP bietet das ThinkPHP-Framework als beliebtes Entwicklungsframework einige praktische Möglichkeiten zur Implementierung asynchroner Aufgaben.

Meistern Sie, wie Golang Möglichkeiten für die Spieleentwicklung eröffnet Meistern Sie, wie Golang Möglichkeiten für die Spieleentwicklung eröffnet Mar 16, 2024 pm 12:57 PM

Im heutigen Bereich der Softwareentwicklung wird Golang (Go-Sprache) als effiziente, prägnante und hochgradig parallele Programmiersprache von Entwicklern zunehmend bevorzugt. Seine umfangreiche Standardbibliothek und die effizienten Parallelitätsfunktionen machen es zu einer hochkarätigen Wahl im Bereich der Spieleentwicklung. In diesem Artikel wird untersucht, wie man Golang für die Spieleentwicklung verwendet, und seine leistungsstarken Möglichkeiten anhand spezifischer Codebeispiele demonstriert. 1. Golangs Vorteile bei der Spieleentwicklung: Als statisch typisierte Sprache wird Golang beim Aufbau großer Spielsysteme verwendet.

Implementierungshandbuch für PHP-Spielanforderungen Implementierungshandbuch für PHP-Spielanforderungen Mar 11, 2024 am 08:45 AM

Implementierungsleitfaden für PHP-Spielanforderungen Mit der Popularität und Entwicklung des Internets erfreut sich der Markt für Webspiele immer größerer Beliebtheit. Viele Entwickler hoffen, die PHP-Sprache zur Entwicklung ihrer eigenen Webspiele nutzen zu können, und die Umsetzung der Spielanforderungen ist ein wichtiger Schritt. In diesem Artikel wird erläutert, wie Sie mithilfe der PHP-Sprache allgemeine Spielanforderungen implementieren und spezifische Codebeispiele bereitstellen. 1. Spielfiguren erstellen In Webspielen sind Spielfiguren ein sehr wichtiges Element. Wir müssen die Attribute des Spielcharakters wie Name, Level, Erfahrungswert usw. definieren und Methoden für deren Bedienung bereitstellen

So implementieren Sie eine exakte Divisionsoperation in Golang So implementieren Sie eine exakte Divisionsoperation in Golang Feb 20, 2024 pm 10:51 PM

Die Implementierung exakter Divisionsoperationen in Golang ist ein häufiger Bedarf, insbesondere in Szenarien mit Finanzberechnungen oder anderen Szenarien, die hochpräzise Berechnungen erfordern. Der in Golang integrierte Divisionsoperator „/“ wird für Gleitkommazahlen berechnet, und manchmal besteht das Problem eines Präzisionsverlusts. Um dieses Problem zu lösen, können wir Bibliotheken von Drittanbietern oder benutzerdefinierte Funktionen verwenden, um exakte Divisionsoperationen zu implementieren. Ein gängiger Ansatz ist die Verwendung des Rat-Typs aus dem Paket math/big, der eine Darstellung von Brüchen bereitstellt und zur Implementierung exakter Divisionsoperationen verwendet werden kann.

See all articles