AJAX call can detach all behaviors

Created on 1 March 2017, about 8 years ago
Updated 30 January 2023, about 2 years ago

Situation: An AJAX calls returns, amongst others, an "insert" command with incorrect selector, and/or ajax.wrapper isn't set on the AJAX object.
Result: On line 1056 of ajax.js (latest 8.4.x-dev) $wrapper will contain no elements, Drupal.detachBehaviors() will get null/undefined as the first argument and that in turn will let it default to document as the context – removing/detaching all behaviors from the complete page. Even if this requires an incorrect AJAX response, I don't think this is reasonable behavior. Especially, it also contradicts the comment a bit further down that "this if statement allows `#ajax['wrapper']` to be optional".

πŸ› Bug report
Status

Needs work

Version

10.1 ✨

Component
AjaxΒ  β†’

Last updated about 1 hour ago

Created by

πŸ‡¦πŸ‡ΉAustria drunken monkey Vienna, Austria

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Merge Requests

Comments & Activities

Not all content is available!

It's likely this issue predates Contrib.social: some issue and comment data are missing.

  • The Needs Review Queue Bot β†’ tested this issue. It either no longer applies to Drupal core, or fails the Drupal core commit checks. Therefore, this issue status is now "Needs work".

    Apart from a re-roll or rebase, this issue may need more work to address feedback in the issue or MR comments. To progress an issue, incorporate this feedback as part of the process of updating the issue. This helps other contributors to know what is outstanding.

    Consult the Drupal Contributor Guide β†’ to find step-by-step guides for working with issues.

  • First commit to issue fork.
  • πŸ‡ΊπŸ‡ΈUnited States recrit

    I recently ran into this issue. When Drupal.detachBehaviors() is called with an empty context, it will numerous issues. Any JS implementing a detach will remove everything that it did in attach. For example, any autcomplete UX added by core/misc/autocomplete.js.

    I created the MR with the 1 line fix.
    The attached static patch can be used for composer builds and applies to both 11.x and 10.3.x+.

  • Pipeline finished with Failed
    about 2 months ago
    Total: 916s
    #434735
  • πŸ‡©πŸ‡ͺGermany mxh Offenburg

    This issue is rather old but interestingly I also ran into this issue the last couple of days. In my case I'm just returning a MessageCommand as Ajax response. When no message is already existing on the page, this bug occurs.

Production build 0.71.5 2024