ES6ではなくES5でカスタム要素v1を作成する

TwitchBronBron

現在、カスタム要素仕様のv1の正確な仕様に従っている場合、クラスをサポートしていないブラウザーでカスタム要素を使用することはできません。

クラス構文使用せずにv1カスタム要素を作成して、Chrome、FireFox、およびIE11で完全に機能するようにする方法はありますか。また、IE11はカスタム要素をネイティブでサポートしていないため、おそらくいくつかのポリフィルを使用する必要があると思います。IE11でこれを機能させるには、どのポリフィルまたはライブラリが必要ですか?

私はPolymer2、Polymer 3、およびStencilをいじりましたが、これらはすべて、作成したいもののいくつかに対して少し頑丈です。

この質問は正しい方向に進んでいるようですが、IE11で機能させるのに問題がありました。また、カスタム要素の目的でIE11でReflect.constructを使用するにはどうすればよいですか?

TwitchBronBron

これは、v1仕様を使用してES5互換のカスタム要素を作成する完全な例です(githubのこのコメントのクレジット

<html>

<head>
  <!--pollyfill Reflect for "older" browsers-->
  <script src="https://cdn.rawgit.com/paulmillr/es6-shim/master/es6-shim.min.js"></script>
  <!--pollyfill custom elements for "older" browsers-->
  <script src="https://cdn.rawgit.com/webcomponents/custom-elements/master/custom-elements.min.js"></script>
  <script type="text/javascript">
    function MyEl() {
      return Reflect.construct(HTMLElement, [], this.constructor);
    }

    MyEl.prototype = Object.create(HTMLElement.prototype);
    MyEl.prototype.constructor = MyEl;
    Object.setPrototypeOf(MyEl, HTMLElement);

    MyEl.prototype.connectedCallback = function() {
      this.innerHTML = 'Hello world';
    };
    customElements.define('my-el', MyEl);
  </script>
</head>

<body>
  <my-el></my-el>
</body>

</html>

また、タイプスクリプト愛好家のために、ES5にコンパイルされたときにも機能するタイプスクリプトを使用してカスタム要素を作成する方法を次に示します。

<html>
<head>
    <!--pollyfill Reflect for "older" browsers-->
    <script src="https://cdn.rawgit.com/paulmillr/es6-shim/master/es6-shim.min.js"></script>
    <!--pollyfill custom elements for "older" browsers-->
    <script src="https://cdn.rawgit.com/webcomponents/custom-elements/master/custom-elements.min.js"></script>
    <script type="text/typescript">
        class MyEl extends HTMLElement{
          constructor(){
              return Reflect.construct(HTMLElement, [], this.constructor);
            }  
            
            connectedCallback () {
              this.innerHTML = 'Hello world';
          }
        }

        customElements.define('my-el', MyEl);
    </script>

</head>

<body>
    <my-el></my-el>
    <!-- include an in-browser typescript compiler just for this example -->
    <script src="https://rawgit.com/Microsoft/TypeScript/master/lib/typescriptServices.js"></script>
    <script src="https://rawgit.com/basarat/typescript-script/master/transpiler.js"></script>
</body>

</html>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Angularビルドが「es5」と「es2015」を含むが「es6」を含まない(またはサフィックスがまったくない)ファイルを作成するのはなぜですか?

分類Dev

プログラムでes6をes5に変換するためにbabelを使用する方法は?

分類Dev

ES5でES6クラスを拡張するにはどうすればよいですか?

分類Dev

ES5でES6クラスを拡張するにはどうすればよいですか?

分類Dev

ES6クラスはES5スタイルとどのくらい異なりますか?

分類Dev

es5のES6メソッド(クラス)に相当するものは何ですか?

分類Dev

Babelを使用してES6をES5にオンラインでトランスパイルする

分類Dev

ES5でトランスパイルされたES6を使用するにはどうすればよいですか?

分類Dev

es6でデストラクタを作成する方法

分類Dev

ES6をES5にコンパイルするために必要なのはbabel-cliplusプリセットだけですか?

分類Dev

PolymerのES6でリスナーを作成する方法は?

分類Dev

ES5ですべての入力ボックスが空であるかどうかを知る(このES6に相当するES5は何ですか?)

分類Dev

ES6でES5の1行の類推はありますか? `module.exports = require( './ inner.js')`?

分類Dev

Angularjs v1:データカスタムディレクティブ属性を作成することは可能ですか?

分類Dev

重複した要素のリストを作成するES6の同等の方法は何ですか?

分類Dev

ES5およびES6クラスを動的に拡張する方法

分類Dev

TypeScript内で使用する場合、ES6機能はES5にコンパイルされますか?

分類Dev

es5.1ではなくes5にバベルトランスパイルする方法

分類Dev

ES6矢印関数をES5に変換する

分類Dev

TypescriptからECMAScript5へのトランスパイルのカスタム要素v1がIE11で失敗する

分類Dev

JestでES6クラスをテストすると、「コンストラクタではなく」エラーがスローされます

分類Dev

es6スタイルでlodash関数を書く方法は?

分類Dev

ES6プロジェクトでカスタムタイプ定義を使用することは可能ですか?

分類Dev

ES6でDOM要素を取得する方法は?

分類Dev

配列のような動作でES6クラスを作成する

分類Dev

node.jsとES6を使用して、カスタムデータベース接続クラスから返される値は「未定義」です

分類Dev

ES6で複数のコンストラクターを作成する

分類Dev

ES6 /ノード4でインターフェースを作成する方法はありますか?

分類Dev

異なるスコープでES6 / ESNextプロトタイプ関数を作成します(インライン関数ではありません)

Related 関連記事

  1. 1

    Angularビルドが「es5」と「es2015」を含むが「es6」を含まない(またはサフィックスがまったくない)ファイルを作成するのはなぜですか?

  2. 2

    プログラムでes6をes5に変換するためにbabelを使用する方法は?

  3. 3

    ES5でES6クラスを拡張するにはどうすればよいですか?

  4. 4

    ES5でES6クラスを拡張するにはどうすればよいですか?

  5. 5

    ES6クラスはES5スタイルとどのくらい異なりますか?

  6. 6

    es5のES6メソッド(クラス)に相当するものは何ですか?

  7. 7

    Babelを使用してES6をES5にオンラインでトランスパイルする

  8. 8

    ES5でトランスパイルされたES6を使用するにはどうすればよいですか?

  9. 9

    es6でデストラクタを作成する方法

  10. 10

    ES6をES5にコンパイルするために必要なのはbabel-cliplusプリセットだけですか?

  11. 11

    PolymerのES6でリスナーを作成する方法は?

  12. 12

    ES5ですべての入力ボックスが空であるかどうかを知る(このES6に相当するES5は何ですか?)

  13. 13

    ES6でES5の1行の類推はありますか? `module.exports = require( './ inner.js')`?

  14. 14

    Angularjs v1:データカスタムディレクティブ属性を作成することは可能ですか?

  15. 15

    重複した要素のリストを作成するES6の同等の方法は何ですか?

  16. 16

    ES5およびES6クラスを動的に拡張する方法

  17. 17

    TypeScript内で使用する場合、ES6機能はES5にコンパイルされますか?

  18. 18

    es5.1ではなくes5にバベルトランスパイルする方法

  19. 19

    ES6矢印関数をES5に変換する

  20. 20

    TypescriptからECMAScript5へのトランスパイルのカスタム要素v1がIE11で失敗する

  21. 21

    JestでES6クラスをテストすると、「コンストラクタではなく」エラーがスローされます

  22. 22

    es6スタイルでlodash関数を書く方法は?

  23. 23

    ES6プロジェクトでカスタムタイプ定義を使用することは可能ですか?

  24. 24

    ES6でDOM要素を取得する方法は?

  25. 25

    配列のような動作でES6クラスを作成する

  26. 26

    node.jsとES6を使用して、カスタムデータベース接続クラスから返される値は「未定義」です

  27. 27

    ES6で複数のコンストラクターを作成する

  28. 28

    ES6 /ノード4でインターフェースを作成する方法はありますか?

  29. 29

    異なるスコープでES6 / ESNextプロトタイプ関数を作成します(インライン関数ではありません)

ホットタグ

アーカイブ