firefox / edge中的HTML自定义元素

时间:2018-03-27 08:44:35

标签: javascript html5 custom-element

我很清楚,可以通过在配置中将dom.webcomponents.enableddom.webcomponents.customelements.enabled设置为true来手动启用自定义元素功能(至少在Firefox中) ,但任何人都可以帮助我解释为什么几乎所有文档(w3,mozilla等)都鼓励使用自定义元素,但只有 Chrome 似乎才能正确支持此功能。

最近我一直在使用此polyfill让customElements在其他浏览器上运行:

defineElement = function( tag, opt ){
    if( typeof customElements !== 'undefined' ){
        customElements.define( tag, opt );
    } else {
        document.registerElement( tag, opt );
    }
}
class HTMLxSearchElement extends HTMLElement{
    constructor(){
        super();
        console.log('super');
    }
}
defineElement( 'x-search', HTMLxSearchElement )

但是现在document.registerElement功能也被删除了!有没有人有任何替代方法可以恢复并运行此功能?

4 个答案:

答案 0 :(得分:1)

现在只需使用polyfill https://github.com/WebReflection/document-register-element。它与Custom Element v1对齐。它与IE10 +和所有其他浏览器一起正常工作。 有关更多和最新信息,请参阅https://developers.google.com/web/fundamentals/web-components/

答案 1 :(得分:0)

在某些文档中使用自定义元素v1 鼓励,因为它是HTML/Javascript WHATWG standard

现在它在Chrome浏览器中implemented,但也是Opera和Safari。

if(strtotime($endDateA) > strtotime(trim($startDateB)) and strtotime($startDateA) < strtotime(trim($endDateB))) 使用Firefox 59+不再有效,因为自定义元素v0实现was deprecated

答案 2 :(得分:0)

在我使用Angular Elements创建的Web组件的情况下,我在Edge浏览器中遇到了customElements未定义错误,该解决方案将运行:

public interface CandidateRefRepository extends CrudRepository<CandRef, CandRefKey> { List<CandRef> findByCandIdOrderByInstNoDesc(Integer candId); List<CandRef> findAllByCandIdAndStatCd(Integer candId, String statCd); @Query(value = CandidateRefConstants.CURRENT_INSTANCE_WITH_EXCEPTION) List<CandRef> fetchCurrentInstance(); @Query(value = CandidateRefConstants.CURRENT_MAX_SEQUENCE_BY_CANDID) CandRef fetchCurrentMaxSequence(@Param("candId") Integer candId); @Query(value = CandidateRefConstants.CURRENT_INSTANCE_BY_STATCD) List<CandRef> fetchCurrentInstanceBycandId(@Param("candId") Integer candId); }

在我的Angular Elements项目的polyfills.ts文件中,我添加了:

delete from ref_grp_mber where ref_grp_id=?

那为我解决了问题。

答案 3 :(得分:-1)

本地自定义元素V1规范实现在版本63的FireFox中可用。

因此,let childOfDataRef = your_fb.child("data").childByAutoId() let key = childOfDataRef.key ChromeFireFox和并行移动版本都支持自定义元素。

Opera的支持到目前为止还缺少自定义的内置元素。