Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Web组件:Dom异常:此名称已被使用_Javascript_Html_Web Component_Slim Js - Fatal编程技术网

Javascript Web组件:Dom异常:此名称已被使用

Javascript Web组件:Dom异常:此名称已被使用,javascript,html,web-component,slim-js,Javascript,Html,Web Component,Slim Js,tl:dr;我不知道如何修复网站上的以下错误: 详细信息:我正在尝试在这样一个页面中创建一个web组件: <script> document.addEventListener("DOMContentLoaded", function(event) { if (document.querySelector('simple-fred')) { var script = document.createElement('script'); script.src =

tl:dr;我不知道如何修复网站上的以下错误:

详细信息:我正在尝试在这样一个页面中创建一个web组件:

<script>
  document.addEventListener("DOMContentLoaded", function(event) {
  if (document.querySelector('simple-fred')) {
    var script = document.createElement('script');
    script.src = 'https://embedint.crossroads.net/fred/js/simplefred.min.js';
    document.head.appendChild(script)
  }
});
</script>
这一切都很好,但当我与其他代码一起运行此代码时,它失败了。我收到以下错误(相同的错误,浏览器的报告不同):

铬:

未捕获的DomeException:未能在上执行“定义” “CustomElementRegistry”:此名称已用于此 登记处 在Function.value()处

Mozilla:

错误:已删除名为“slim repeat”的自定义元素 定义

据我所知,这个错误似乎是由两个第三方试图创建相同的自定义组件引起的

我现在不知所措。引发错误的int环境如下所示:

您可能需要登录,我制作了一个,因此速度更快(可以共享):

代码是开源的,可以在这里找到(我不认为查看它会有所帮助,只是为了完整):
https://github.com/crdschurch/crds-fred/blob/development/CrdsFred/Views/Form/Index.cshtml

我该如何解决这个问题


或者至少,可能的原因是什么?我将为此至少奖励100分,以奖励接受的答案。

看起来有一个名为slim js的节点模块,它在slim.js的第1057行和/或第1146行创建了一个名为slim repeat的元素(参见屏幕截图)。也许你只需要选择一个不同的名字


我是这个图书馆的作者,愿意提供帮助。我将为此问题部署热修复程序。如果Slim的另一个实例已经初始化,那么最终不会运行整个脚本

这是一个很难解决的问题,但你抓住了问题的核心。2天内我欠你100分赏金,如果我忘记了,请提醒我。如果他们使用的是
,那么你需要使用其他名称。如果您需要使用
,那么请注意,它可能无法满足slim其他人的期望。@Intervalia我理解所有这些。创建slim repeat的代码来自
slim.js
库,它由不同的web组件拉入两次。我想避免分叉
slim.js
,因为这是不可维护的,也是一种不好的做法。@VSO你能绕过它吗?@Intervalia是的,我分叉
slim.js
,并告诉它如果元素已经存在,就不要创建它:`if(!customElements.get(tagName)){customElements.define(tagName,class);}`这是一种黑客行为。代码需要重构。不同的团队都独立地加入了
slim.js
。他们的工作需要整合或共享该实例。听起来不错,请参阅我上面的评论,了解修复方法。通过所有客户的自动化和手动测试,似乎工作正常。如果您有任何问题或您是否修复了它,请告诉我。谢谢,我会把它拉进来,如果它有任何问题,请告诉您。谢谢。您可以使用gitter频道回答任何问题。
<script>
  document.addEventListener("DOMContentLoaded", function(event) {
  if (document.querySelector('simple-fred')) {
    var script = document.createElement('script');
    script.src = 'https://embedint.crossroads.net/fred/js/simplefred.min.js';
    document.head.appendChild(script)
  }
});
</script>
<simple-fred data-form-name="buildingblocksformarriage" data-redirect-url="/care/weddings/building-blocks-for-marriage/signup/confirmation">&nbsp;</simple-fred>
TASKKILL /F /IM chrome.exe
start chrome.exe --args --disable-web-security --user-data-dir
pause
stackoverflowuserj23jf4@mailinator.com
testingStackOverflow123