2012-04-29 47 views
7

Tôi muốn bao gồm jquery trong tập tin, nếu không có sẵn trong trang. Tôi có thể làm như thế nào?Bao gồm jQuery, nếu không bao gồm đã

tôi đã viết điều này, nhưng nó đem lại cho sản lượng không mong muốn.

<script type="text/javascript"> 
if ('undefined' == typeof window.jQuery) { 
    // jQuery not present 
// alert("Jquery Unavailable"); 
<?php echo '<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js"></script>'; ?> 
} else { 
    // jQuery present 
    alert("Jquery Available"); 
} 
</script> 
+0

liên quan: http://stackoverflow.com/questions/6787569/best-way-to-avoid-including-stylesheets-external-js-more-than-once-in-a- trang –

Trả lời

11

bạn không thể làm điều đó trong PHP. Hãy thử điều này thay vì

<script type="text/javascript"> 

if(typeof jQuery == 'undefined'){ 
     document.write('<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js"></'+'script>'); 
    } 

</script> 
+1

Đó là phong cách của các rủi ro khi giao nhiệm vụ 'onload' nó được ghi đè lên. Cũng gọi 'document.write' sau khi sự kiện' onload' cháy sẽ làm hỏng tài liệu hiện có! – Quentin

+0

Cảm ơn. Tôi đã chỉnh sửa mã của tôi – Sethunath

+0

@Sethunath: Cả mã của bạn lẫn mã của tôi đều không hoạt động. Khi tôi thực hiện điều này trong một trang, kết thúc sau khi bên trong sẽ xuất hiện trên trang ** '); } ** – Thompson

4

PHP của bạn đang chạy trên máy chủ và xuất một số văn bản.

Sau đó trình duyệt giải thích rằng văn bản dưới dạng HTML và JavaScript.

Bạn không thể chạy PHP trên máy chủ, trong một tài liệu đó đã gửi đến trình duyệt, trong phản ứng logic chạy trong trình duyệt.

Bạn có thể cần phải điều này hoàn toàn trong JavaScript hoặc, sanely hơn, sắp xếp ra phía máy chủ logic của bạn, do đó bạn theo dõi nếu jQuery đã được đưa vào hay không.

6

Bạn có thể thử dưới đây:

<script>window.jQuery || document.write('<script src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js"><\/script>')</script> 
9
<script type="text/javascript"> 
    if(typeof jQuery == 'undefined'){ 
     var oScriptElem = document.createElement("script"); 
     oScriptElem.type = "text/javascript"; 
     oScriptElem.src = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js"; 
     document.head.insertBefore(oScriptElem, document.head.getElementsByTagName("script")[0]) 
    } 
</script> 
+2

Đây là câu trả lời hay nhất – Sethunath

+0

Nhiều câu trả lời khác đặt thẻ tập lệnh trong thẻ tập lệnh. Tôi thích câu trả lời của bạn tốt hơn. Đề nghị duy nhất của tôi sẽ là không bận tâm kiểm tra loại jQuery và chỉ cần so sánh nó với undefined. '' if (jQuery == undefined) '' –

+0

Tough undefined có thể không được undefined nếu undefined được định nghĩa lại trong một số mã ở trên. Nhưng chắc chắn làm bất cứ điều gì bạn nghĩ là tốt nhất. – noob

0

Nếu bạn muốn làm điều đó với PHP, mà tôi nghĩ là tốt hơn, bạn có thể làm điều này

  • trước khi bạn gọi load() chức năng tạo một biến như:

    var load_script = 'no';

  • hàm load() có tham số tùy chọn mà bạn có thể sử dụng để gửi dữ liệu đến máy chủ. Sử dụng nó để đăng các biến load_script bạn đã tạo trước đó như thế này

    $ ('# receiver_div') tải ('mypage.html', { 'load_script': load_script}., ​​Function (html) {

    // công cụ để làm sau khi trang được tải

    })

  • sau đó, trong trang web mà bạn đang tải, nắm bắt những giá trị được đăng như

    này

    $ load_script = $ _POST ('load_script');

  • Sau đó, bạn có thể làm một câu lệnh if để loại trừ kịch bản mà bạn muốn như thế này

if ($ load_script!= 'no') {

echo "<script src="jquery.js"></script>";

}