polymer - polymer 元素内的内容可编辑

标签 polymer contenteditable web-component shadow-dom custom-element

我正在尝试使自定义 polymer 元素内容可编辑。我是 polymer 新手,所以我可能做了一些愚蠢的事情。我可以创建该元素,它会呈现并对事件使用react,但单击时它不会进入可编辑模式。有什么想法吗?

<polymer-element name="editable-h1">
  <template>
    <h1 contenteditable="true">
      <content></content>
    </h1>
  </template>
</polymer-element>

Example on codepen.io

最佳答案

自定义标记中声明的元素被视为 light DOM 的一部分,我猜测,由于阴影边界,在它们上使用 contenteditable 会出现问题。您需要将内容节点重新插入到自定义元素的影子根中才能使其正常工作。

以下是如何实现这一目标的示例:

代码笔

http://codepen.io/anon/pen/WbNWdw

来源

<html>
<head> 
<link rel="import" href="http://www.polymer-project.org/components/platform/platform.js">
<link rel="import" href="http://www.polymer-project.org/components/core-tooltip/core-tooltip.html">

<polymer-element name="editable-h1">
  <script>
  Polymer('editable-h1', {
    ready: function() {
        var sroot = this.$;
        var nodes = sroot.mycontent.getDistributedNodes();
        [].forEach.call(nodes, function(node) {
            sroot.editableportion.appendChild(node);
        });
    },
    blur: function () {
      console.log('blur');
    },
    click: function () {
      console.log('click');
    },
    focus: function () {
      console.log('focus');
    }
  });
  </script>
  <template>
    <h1 contenteditable="true" on-click="{{click}}" on-blur="{{blur}}" on-focus={{focus}} id="editableportion">
    </h1>
    <content id="mycontent"></content>
  </template>
</polymer-element>

</head>
  <body>
    <h1 contenteditable="true">I´m a regular heading</h1>    
    <editable-h1>
      I'm an polymer enhanced heading
      <span>With a span for good measure</span>
    </editable-h1> 
  </body> 
</html> 

关于polymer - polymer 元素内的内容可编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26970999/

相关文章:

javascript - 为什么我可以调用影子 dom 中的函数?

angular - Web 组件设计模式

unit-testing - Selenium 服务器未启动。另一个 Selenium 进程可能已经在运行,或者您的 java 版本可能已过时

javascript - 防止 IE 包裹在 contenteditables 中的 P 元素中

c# - 在代码隐藏文件中,如何将 contentEditable ="true"属性分配给文本框?

javascript - 如何将 div 标签添加到 enter 键上的内容而不是 p 标签

html - polymer 核心下拉值

dart - Dart polymer ,访问“自定义”属性在脚本中返回null

ios - 我可以在 native iOS WebView 中使用 Polymer 吗?

angular - Angular 2.0 能理解 Polymers Shadow DOM 吗?