GoogleTagManager (fbevent.js) 中断 JQuery UI 对话框

GoogleTagManager (fbevent.js) breaks JQuery UI dialog

最近我们实施了 GoogleTagManager (GTM),并且某些 Jquery UI 对话框根本没有显示(其中一些始终有效,其中一些从不工作,一直如此)。很遗憾,我无法提供示例代码。

单击调用 .dialog("open") 的 UI 按钮时,对话框不会显示,但整个页面变为灰色 (div class="ui-widget-overlay ui-front")。我在 html 中看到 div 具有“显示:none”样式。 如果我删除 display: none,对话框最终会显示,但表单的 UI 会乱七八糟。模态框的宽度不知何故是 300px 而不是 1000px,等等。此外,save/cancel 按钮的事件侦听器也丢失了。如果我将 autoOpen: true 放在 jquery UI 对话框声明中,会显示对话框,但仍然以同样的方式搞砸了。

我注意到当我有广告拦截器时,一切正常,但当我没有时,错误就会出现。我还意识到使用 GTM 时浏览器中有一个“fbevents.js”文件,如果我使用广告拦截器明确禁用该文件,错误就会消失。

我还看到一个 facebook.com/tr/ 调用在 Chrome 的网络选项卡中永远保持“待定”状态,当我单击调用对话框的图标时(“打开”) .

当然,如果没有 GTM,网站也能正常运行。

您知道这个错误是什么吗?或者我应该如何继续调查? (不更新 jquery/jqueryUI 或不切换到 bootstrap 模态)?

没有额外的细节很难猜测是什么导致了你的问题,但有一点,我会首先尝试。

检查一下,你的触发器是怎么做的。

有一些 GTM 配置,进入 link 点击事件处理。

所以也许,有一个事件正在监听一个 A 元素,onlky 假装是一个 link 而 GTM 正在等待响应。

如果这是真的,请尝试将事件侦听器更改为通用点击事件(点击 - 所有元素)。

我很幸运。我发现了第二种存在时间很短的形式,它与 facebook 相关(GTM)。我意识到“xy.appendTo('form')”JS代码将数据插入错误的形式......通过将代码更改为“” xy.appendTo('#form1')" 问题解决了。

所以一个简单的 appendTo('form') 启动了多米诺骨牌效应,导致 DOM 中出现重复的 ID,并把一切都搞砸了...

facebook.com/tr 网络选项卡中的调用仍处于待定状态,但我相信这与 Jakub Kriz 的建议有某种关系(我会尽快更新我的答案)。

更新:

即使 GTM 调试器显示没有触发触发器,GTM 也会向 facebook 发送请求。com/tr 每次调用“a/a href”或“input type="button"”被点击。我相信这是默认功能,我明白为什么。

在某些情况下,我们的网站以无效方式使用这些 html 标签:使用“a”代替“div”,将“输入类型按钮”用作图标打开一个模态对话框。如果我们改变这些,不必要的 facebook.com/tr 调用将会消失。

但我仍然不知道挂起状态。我相信当我应用上面提到的更改时,问题就会消失。