将样式应用于在Polymer中使用InnerHTML插入的元素
Applying styles to elements inserted with InnerHTML in Polymer
我有一些元素,其中包含元素的内容,我想格式化它,唯一有效的方法是更改InnerHTML。但是,本地样式表不适用于更改后的内容。如何解决?以下是使用Polymer创建的自定义元素的部分代码:
Polymer({
attached: function() {
this.querySelector(".post-body").innerHTML = this.format(this.querySelector(".post-body").innerHTML);
},
format: function(text) {
return text.replace(/'n(.+)'n/g, "<p>$1</p>");
},
});
在这个例子中,我得到了正确的格式,但我的样式表样式不适用于其中的p元素。有没有办法像将样式重新应用到页面或其他任何东西一样修复它?
更新HTML调用this.updateStyles()
之后。
https://www.polymer-project.org/1.0/docs/devguide/styling.html#style-api
st_efan似乎在另一个线程中切中要害:https://stackoverflow.com/a/32306440
他的解决方案是使用原生的Polymer DOM API来实现这一点。
我遇到了和你描述的一样的问题:我可以让我的数据盖章,但它永远不会被定型。调用this.updateStyles()
并没有解决我的问题,因为我用来盖章的方法似乎没有在聚合方法中应用innerHTML。
在我的示例中,我使用以下CSS进行样式设置:
p {
font-weight: bold;
color: red;
}
在您的原始文章中,您使用的是Polymer DOM API。然而,对于其他阅读者来说,这并不那么明显。数据戳按预期使用以下内容:
var html = "<p>This is a test</p>";
this.$.myElementId.innerHTML = html;
然而,使用这种方法将永远不会允许应用于聚合物元素的CSS样式在innerHTML中生效。Zikes建议的方法应该在某些情况下有效,但我认为它只应用通过host
和mixins
设置的自定义属性。以下内容在我的测试中不起作用。
var html = "<p>This is a test</p>";
this.querySelector("#myElementId").innerHTML = html;
this.updateStyles();
最终在我的测试中起作用的解决方案,似乎是设置innerHTML的合适方法,是通过Polymer.dom
:
var html = "<p>This is a test</p>";
Polymer.dom(this.$.myElementId).innerHTML = html;
在最后一个示例中,不需要调用this.updateStyles();
。
相关文章:
- 将样式表插入iframe
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- 转义符不能与innerHTML一起使用
- 如何动态插入jquery代码
- 使用元素的值与innerHTML
- 如何使用innerHtml正确插入html
- 如何运行以嵌入式形式插入到.innerHTML中的javascript
- 尝试在javascript中使用innerHTML插入整个表
- 使用innerHTML(JS)插入select元素
- innerHTML在正文中插入脚本(用于ZeroClipboard)不起作用
- 如何在指令内部用innerHTML插入的html上使用ng-bind
- 通过innerHTML插入Javascript函数时出现ReferenceError
- javascript:如何插入对象到innerHtml
- 可以't使用<br>使用innerHTML插入后
- 使用innerHTML插入内容不执行