Wie ist es/(oder nur "ist es?") Möglich, eine Web-Komponente zu erstellen, die in ein Formular eingefügt werden kann und genau wie jedes Eingabeelement beim Senden an den Server gesendet wird? Mit anderen Worten, können Web-Komponenten zum Erstellen benutzerdefinierter Eingabeelemente verwendet werden?Können Web-Komponenten zum Erstellen benutzerdefinierter Eingabeelemente verwendet werden?
Antwort
Verwenden Sie die folgenden Browser-Konfigurationsoptionen vor dem Test:
- Chrome:
about:flags => Enabled Experimental WebKit Features/Enable Experimental Web Platform
- Firefox:
about:config => dom.registercomponents.enabled
document.registerElement
zu ermöglichen.
den extends
Parameter document.registerElement
Verwenden einer nativen Eingangselement zu erstrecken:
/* Cross-browser fallback */
document.registerElement = document.registerElement || document.register;
/* Element registration using x-tag format */
var MegaButton = document.registerElement('x-button', {
prototype: Object.create(HTMLButtonElement.prototype),
extends: 'button'
});
Referenzen
- Extending Native Elements
- HTML as Custom Elements
- Extending Custom Elements
- Create Custom HTML Elements
- x-tag and the Web Components Family
- Performance and Custom Elements
- Mozilla: Custom Elements
- Detailed Introduction to Custom Elements
- Web Components: The Chromium Projects
- Web Components Best Practices
- Component Model Wiki
- Web Component Proposals: Type Extensions
[Hier ist eine Demo, die nicht zu sein scheint Arbeiten in Chrome oder Firefox mit dem von Ihnen bereitgestellten Code] (http://jsfiddle.net/sBWr2/). Fehle ich etwas? Ich habe überprüft, ob ich "Enable experimental Web Platform features" aktiviert habe. – zzzzBov
@zzzzBov Danke für die Köpfe hoch. Ich habe [die Geige] (http://jsfiddle.net/sBWr2/46/) aktualisiert, damit es in Firefox funktioniert und [ein anderes Beispiel] gefunden (http://jsfiddle.net/Buttonpresser/9W4pe/), das funktioniert Verwenden von Stylesheet-Regeln zum Definieren der Anzeigeeigenschaften des benutzerdefinierten Tags. –
Um klar zu sein, das Problem, das ich mit benutzerdefinierten Elementen habe scheint nicht mit Registrierung, Rendering oder Styling zu sein. Wenn sie Formulardaten darstellen sollen, funktionieren die Dinge nicht. Ich habe noch kein Beispiel gesehen, wo ein benutzerdefiniertes Element registriert werden kann, so dass es als Teil eines Formulars eingereicht werden kann, oder angeklickt, um ein Formular zu senden. – zzzzBov
Beispiel für ein benutzerdefiniertes Eingabeelement, das von Google mithilfe von Polymer erstellt wurde: https://www.polymer-project.org/components/paper-input/demo.html – Ajedi32