2010-07-08 27 views
5

Vì vậy, tôi phải xác định loại trang trong một CRM độc quyền, sử dụng JavaScript. Cách duy nhất để xác định loại trang (có nghĩa là, sự khác biệt nhất quán duy nhất trên giao diện người dùng) là kiểm tra thẻ tập lệnh (trong số nhiều danh sách) có thuộc tính src bắt đầu bằng/modules /.Trích xuất thuộc tính src từ thẻ tập lệnh và phân tích cú pháp theo các kết quả cụ thể

Trong một danh sách của một chục hay như vậy thẻ script trong tiêu đề, mỗi trang có một dòng định dạng sau

<script src="/modules/example/includes/sample.js" type="text/javascript"></script> 

Bây giờ, thứ tự của các thẻ script không bao giờ giống nhau, nhưng, có luôn luôn có một tập lệnh có/modules/blah. Tôi cần trích xuất blah vào tập lệnh của mình có thể phát hiện loại trang đó là gì. Vì vậy, làm cách nào để sử dụng JavaScript hoặc jQuery, trích xuất giá trị src của thẻ script, trong đó src bắt đầu bằng/modules và lưu trữ giá trị sau đó (ví dụ ', trong ví dụ ở trên) dưới dạng biến javascript ?

Trả lời

14

Vâng, bạn có thể bắt đầu bằng cách thu thập tất cả các phần tử tập lệnh. Với jQuery, đó là đơn giản như

var scripts = $("script"); 

Sau đó, hạn chế mà các thiết lập để các yếu tố đó có một thuộc tính src:

var scripts = $("script[src]"); 

... và tiếp tục hạn chế nó để những người có srcattribute beginning with "/ modules/":

var scripts = $("script[src^='/modules/']"); 

... mà cho mô tả của bạn nên kết quả trong một bộ đúng một phần tử, từ đó bạn có thể kéo src Giá trị thuộc tính:

var path = $("script[src^='/modules/']").attr('src'); 

Ok, thật dễ dàng - bây giờ để trích xuất phần tiếp theo của đường dẫn. Có rất nhiều cách để thực hiện việc này, nhưng chia nhanh là & câm: tạo một mảng các phần bằng cách sử dụng dấu '/', sau đó chọn phần tử thứ ba (sẽ là phần tử sau "mô-đun"):

var pathPart = $("script[src^='/modules/']").attr('src').split('/')[2]; 

Rõ ràng, đây là tất cả rất cụ thể cho các định dạng chính xác của con đường kịch bản bạn đang sử dụng làm ví dụ, nhưng nó sẽ cho bạn một ý tưởng tốt về làm thế nào để bắt đầu ...

+0

Cảm ơn! Tôi vừa mới lấy ví dụ thứ ba; cần thiết được tổ chức để vượt qua cái bướu cho cái cuối cùng. – Yahel

+0

@yc: Tôi đã mở rộng thêm một chút ... – Shog9

Các vấn đề liên quan