Khi bạn đang sử dụng asp.net, nó làm cho tinh thần để làm việc kiểm tra server-side như rằng sẽ là nơi bạn chọn thêm tham chiếu vào tệp javascript. Từ file ascx của bạn, bạn có thể đăng ký như sau:
this.Page.ClientScript.RegisterClientScriptInclude("GlobalUnqiueKey", UrlOfJavascriptFile);
... từ trang của bạn, bạn chỉ cần gọi các đối tượng clientscript trực tiếp:
ClientScript.RegisterClientScriptInclude("GlobalUnqiueKey", UrlOfJavascriptFile);
Các 'GlobalUniqueKey' có thể là bất kỳ chuỗi (I sử dụng url của tệp javascript cho quá này)
Nếu bạn cố gắng đăng ký một tập lệnh với cùng một chuỗi khóa, nó không làm gì cả. Vì vậy, nếu bạn gọi điều này trong trang của bạn, kiểm soát của bạn hoặc bất cứ nơi nào khác, bạn sẽ kết thúc với chỉ một tài liệu tham khảo trong trang của bạn. Lợi ích của việc này là bạn có thể có nhiều phiên bản điều khiển trên một trang và mặc dù tất cả chúng đều cố gắng đăng ký cùng một tập lệnh, nhưng nó chỉ được thực hiện tối đa một lần. Và không ai trong số họ cần phải lo lắng về kịch bản đã được đăng ký. Có một phương pháp 'IsClientScriptIncludeRegistered (stringkey)' mà bạn có thể sử dụng để xem tập lệnh đã được bao gồm trong khóa đó hay chưa nhưng có vẻ như không cần thiết để kiểm tra trước khi đăng ký như nhiều lần đăng ký không ném ngoại lệ hoặc gây ra bất kỳ lỗi nào khác. Thực hiện kiểm tra phía máy khách có nghĩa là, giả sử nhiều tham chiếu javascript được lưu trữ bởi trình duyệt (chúng có thể không có), bạn vẫn có nhiều thẻ và phần đầu của mỗi thẻ khiến javascript chạy. Nếu bạn có 20 trường hợp kiểm soát của mình trên một trang, bạn có thể gặp phải các vấn đề nghiêm trọng.
Nguồn
2009-05-26 00:31:02
Có lý do tại sao bạn không thể chỉ bao gồm thư viện javascript trong tất cả các trang? – jfar
jfar, Tôi có các trang web chỉ cần tệp javascript một trang cụ thể khi tôi hiển thị một điều khiển cụ thể, phần lớn thời gian kiểm soát đó sẽ không được sử dụng ở tất cả trên trang đó. Sẽ là lãng phí khi đưa javascript vào mỗi người dùng truy cập mọi trang trên trang web, đặc biệt nếu bro của họ wser nhấn mạnh vào yêu cầu tệp trên mỗi yêu cầu. –
Lý do tôi không muốn bao gồm nó trong tất cả các trang là hiệu suất: Tôi không cần nó trong tất cả chúng. Neil, cảm ơn vì đã giải thích. – Shimmy