javascript - Drupal CiviCRM Javascript 冲突

标签 javascript drupal drupal-6 civicrm

在全新的 Drupal 安装中安装了 CiviCRM,自定义了 CiviCRM 并添加了数据。实际的 Drupal 站点是在单独的安装中单独构建的。现在它已完成,我将 CiviCRM 与新的 Drupal 站点(文件和数据库)合并。除了登录 CiviCRM 时,一切似乎都正常工作:http://example.com/civicrm/dashboard它说:

“必须在您的浏览器中启用 Javascript 才能使用仪表板功能。”

是的,Javascript 已启用。 CiviCRM 菜单全都坏了等等。 Chrome 还报告以下错误:

未捕获的类型错误:对象 # 没有方法“菜单” jquery.textarearesizer.js:5Uncaught TypeError: 对象 # 没有方法 'TextAreaResizer' main.js:6Uncaught TypeError: 对象 # 没有方法 'cycle' jquery.textarearesizer.js:5Uncaught TypeError: 对象 # 没有方法 'TextAreaResizer'

未启用性能下的 Javascript 压缩。有什么想法吗?

最佳答案

CiviCRM 使用 jQuery 对象作为 cj 而不是 $ 以避免与 Drupal JQuery 库发生冲突。理论上,它们可以使用不同的版本,因为它们的命名空间不同(jQuery 官方支持使用 noConflict())。

您的冲突可能来自您的修改,导致 Drupal 或 CiviCRM 在 Bootstrap 的不同点加载其 jQuery 库,或者使其尝试多次加载 jQuery。这将使将 $ 转换为 cj 的操作在实例化之后而不是之前获取 Drupal jQuery 对象,从而使 Drupal 和/或 CiviCRM 没有需要附加到 $ 对象的库(您是否使用 # 而不是$?).

在相关页面及其 JavaScript 包含的所有地方搜索所有使用 noConflict() 的代码。你应该只在一个地方找到它。与 demo.civicrm.org 页面进行比较以查看不同之处,您可能会在某处找到一个额外的页面。修复它的最大希望是调整自定义模块在 Drupal 系统表中的加载顺序,或者将第二个 noConflict() 调用设置为在没有 cj 对象的情况下有条件地运行。

关于javascript - Drupal CiviCRM Javascript 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6271831/

相关文章:

javascript - 仅当滚动条位于顶部时,模态弹出才会显示在中心

javascript - 在循环中调用时 splice 不会删除元素

php - Drupal 7 中用户的图片存储在哪里?

drupal - 从Drupal 6升级到Drupal 7:最佳程序员实践?

php - 在 hook_views_query_alter() 中添加 JOIN 语句

drupal - 如何在 Drupal 中的 "access denied"页面上持久保存表单数据?

javascript - 将数组从函数中推送到另一个函数中

javascript - jquery刷新页面后如何获取文本输入的旧值?

html - 页脚中的版权符号未随其余文本调整大小(在 Drupal 7 中)

css - Drupal 7 事件菜单样式