javascript - Safari 上的 Polymer 2.0

标签 javascript safari polymer polymer-2.x

任何人都可以帮我解决疑问吗...我正在 Safari 上测试新的 Polymer 2.0 预览版,但似乎无法正常工作。 问题是,我在index.htm 中使用了一个简单的代码(只是我的元素),加载了polyfill,但我没有使用gulp 和BrowserSync 进行构建和服务。它恰好可以在 Chrome 和 Mozila 上运行,但不能在 Safari 上运行。该组件甚至无法加载。

我需要在 Safari 上提供服务之前进行构建吗?

这是一个简单的代码,只是为了测试......但我无论如何都会发布:

索引:

<!DOCTYPE html>
<html lang="pt-br">
<head>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <title>Polymer element - Test</title>

  <script src="bower_components/webcomponentsjs/webcomponents-lite.js"></script>    

  <link rel="import" href="/src/my-element.html"></link>    

</head>   

<body>

  <my-element></my-element>

</body>
<script>
  window.addEventListener('WebComponentsReady', function() {
    alert('Web Components Working');
  });
</script>
</html>

我的元素:

<link rel="import" href="../bower_components/polymer/polymer-element.html">

<dom-module id="my-element">
  <template>

    <!-- Style -->
    <style>

      :host {
        display: block;
      }

    </style>
    <h2>Name : [[name]]</h2>

    <slot></slot>

  </template>

  <script>

    // Extend Polymer.Element base class
    class MyElement extends Polymer.Element {

      static get is(){ return 'my-element' }

      // properties
      static get properties() {
        return {
          name: {
            type: String,
            value: 'my-element'
          }
        };
      }

      // observers
      static get observers() {
        return ['_nameChanged(name)'];
      }

      // constructor
      constructor() {
        super();
        console.log('my-element > created');
      }

      connectedCallback(){
        super.connectedCallback();
        console.log('my-element > attached');

      }

      disconnectedCallback(){

      }

      attributeChangeCallback(){

      }

      // ready > add listeners and attributes at appropriate callback
      ready() {
        this.addEventListener('click', (e) => {
          this._handleClick(e);
        });

        super.ready();
        console.log('my-element > ready');
      }

      _handleClick(e) {
        console.log(e.type);
      }

      _nameChanged(name){
        console.log(`Name: ${name}`);

        // Select the elements
        // this.$.
        // this.$.
      }


    }

    // Register custom element definition using standard platform API
    customElements.define(MyElement.is, MyElement);
  </script>
</dom-module>

最佳答案

尝试更改上面的导入:

<link rel="import" href="../bower_components/polymer/polymer-element.html">

致:

<link rel="import" href="../bower_components/polymer/polymer.html">

看看它是否有效。

您可以检查目录并查找文件“polymer-element.html”(如果它存在于以下目录中):

../bower_components/polymer/

关于javascript - Safari 上的 Polymer 2.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42634099/

相关文章:

html - 无法将样式应用于 safari 中的标签 pre

javascript - Safari - 从 Canvas 上下文检索字体属性时缺少字体粗细组件

dart - 在 polymer 和 Dart 中将内容标签渲染为模板的一部分

javascript - 解码这个基于主密码和网站名称生成密码的javascript

javascript - 使用 angularjs 保存 gridster 布局

JavaScript 倒计时器在 1 秒后卡住

javascript - 条件 ng-required 集体检查 3 个输入框不起作用

ios - Safari 远程调试 iOS 时黑屏

javascript - 共享自定义元素创建性能

css - 如何在 Polymer 中将 4 列 flexbox 布局缩小为 2 列?