sự khác biệt giữa việc sử dụng drupal_add_js và ['#attached']


8

Sự khác biệt giữa drupal_add_js()và là $form['#attached']['js'][]gì?
Khi nào thì mục đích của việc sử dụng từng chức năng trên?

(Ý tôi là tôi biết rằng nó được sử dụng để gắn js để nói biểu mẫu nếu được sử dụng bên trong biểu mẫu nhưng khi nào được drupal_add_jssử dụng và khi nào được $form['#attached']['js'][]sử dụng?)

Câu trả lời:


9

Nếu bạn đang sử dụng drupal_add_js()trong chức năng xây dựng biểu mẫu của mình, bạn đang đính kèm JavaScript vào một trang và đó là nó.

Nếu bạn đang sử dụng $form['#attached']['js'], các mô-đun khác có thể tương tác, kiểm tra và thay đổi nó khi họ cần, sử dụng hook_form_alter(). Đó là cách bạn nên chọn mỗi khi JavaScript của bạn có liên quan về mặt chức năng với hình thức cụ thể.

Ngoài ra, chúng có chức năng giống nhau.

Lưu ý rằng thường sử dụng các thư viện JavaScript tốt hơn so với các tệp JavaScript đơn giản, vì chúng cho phép bạn khai báo các phiên bản, giữ mối quan hệ giữa JS và CSS, quản lý các phụ thuộc, nói chung, chúng mạnh hơn nhiều.

Tất nhiên sau đó bạn nên sử dụng $form['#attached']['library']khi Thư viện JavaScript của bạn có chức năng liên quan đến biểu mẫu cụ thể và chỉ sử dụng drupal_add_library()khi không có biểu mẫu nào liên quan đến chức năng của thư viện.


Vì vậy, để thay đổi trang nút (nút / [nid]) người ta nên sử dụng drupal_add_js và đối với node_form (nút / add) người ta nên sử dụng $ form ['# Đính kèm'] ['js'] .. Tôi có đúng không?
khắc nghiệt

Còn những khối thì sao?
khắc nghiệt

@harshal Vâng. Trừ khi JS của bạn trên nút / add không liên quan đến một biểu mẫu thêm nút và hoạt động trên các phần tử không thuộc về biểu mẫu đó. Sau đó sử dụng drupal_add_js như bình thường.
Mołot

3
@harshal Không bao giờ đặt drupal_add_js()trong tệp mẫu, nó sẽ phá vỡ mọi thứ khi bộ nhớ đệm / tổng hợp được bật
Clive

1
@Clive Vâng, với các thư viện trên JS trần trụi, tôi đồng ý và tôi nên chỉ ra nó ngay từ đầu. Tôi đang sử dụng chúng vì các vấn đề của tôi với jQuery Multi. Chỉ muốn chắc chắn câu trả lời của tôi đầy đủ và cạn kiệt chủ đề.
Mołot
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.