Wie erkenne ich die Unterstützung für contentEditable über JavaScript?

7

Ich habe jetzt seit ein paar Tagen nach diesem gesucht und bis jetzt ist das beste, das ich kommen kann, die Liste unten zu überprüfen. Ich mag es wirklich nicht, auf der Basis von User-Agent nach Unterstützung zu suchen, besonders, weil es gefälscht werden kann. Ich habe auch von mindestens einer Instanz gehört, bei der die Liste unten falsch ist (siehe unten).

  • Ist Internet Explorer?
  • Ist WebKit? (Aber ich habe gelesen, dass mobile Safari es nicht unterstützt)
  • Ist Opera?
  • Ist Gecko und Version & gt; = 1.9? (bedeutet Firefox 3 oder höher)

Gibt es eine bessere Methode, um Tests direkt über JavaScript zu testen, oder ist dies die einzige Möglichkeit, auf Unterstützung zu testen?

    
Jason 10.12.2009, 16:26
quelle

4 Antworten

7

Der beste Weg, um nach einer bestimmten Funktion zu suchen, besteht darin, test für diese Funktion eines Elements zu testen, von dem Sie wissen, dass es dies unterstützt:

%Vor%

oder

%Vor%     
Mike Dinescu 10.12.2009, 16:32
quelle
9
%Vor%     
bobince 10.12.2009 16:31
quelle
2

Die beste Lösung für mein Szenario (ähnlich wie bei Ihnen), die ich gefunden habe, ist unten. Es ist wahrscheinlich nicht kugelsicher, deckt aber die meisten Situationen ab:

%Vor%

Sie können es in diesem jsFiddle testen.

Hinweis: Abhängig von Ihren Bedürfnissen und Ihrem Zweck müssen Sie möglicherweise auch die IE-Version erkennen, da die Unterstützung von contenteditable is ... "nicht ideal" ist :-) Die meisten Probleme werden von der Bibliothek Rangy.js behandelt .

    
Frodik 29.09.2012 14:16
quelle
1

Die Antwort von bobince funktioniert größtenteils, aber wie bereits erwähnt, benötigen Sie User Agent Sniffing, um iOS- und Android-Versionen auszuschließen, die die Softwaretastatur nicht aufrufen. Ich benutze derzeit etwas wie folgt:

%Vor%

Dies sollte verhindern, dass ältere iOS- und Android-Geräte "True" zurückgeben. Es hat jedoch immer noch ein Problem: physische Tastaturen. Wenn beispielsweise ein Gerät Android 2.3 ausführt, aber über eine physische Tastatur verfügt, kann der Benutzer contentEditable verwenden. Diese Funktion gibt jedoch false zurück. Physische Tastaturen sind jedoch ziemlich selten.

Häufiger ist es bei einigen Geräten möglich, dass der Benutzer die Bildschirmtastatur durch Drücken und Halten der Menütaste aufrufen kann. Offensichtlich ist dies nicht wirklich etwas, von dem Ihre Benutzer etwas erwarten sollten.

Sie können diese Probleme leicht mildern, indem Sie dem Benutzer die Möglichkeit geben, den Sniffing-Teil des Erkennungsskripts manuell zu überschreiben. Sie können dies in der Funktion isContentEditable implementieren, indem Sie eine Überschreibungsüberprüfung zu "if (canEditContent)" hinzufügen. Die Implementierung der UI könnte jedoch eine größere Herausforderung darstellen;).

    
ChrisD 31.05.2013 16:58
quelle