Как добавить jQuery в файл JS - PullRequest
123 голосов
/ 17 июля 2009

У меня есть код, специфичный для сортировки таблиц. Поскольку код является общим на большинстве страниц, я хочу создать файл JS, в котором будет код, и все страницы, использующие его, могут ссылаться на него оттуда.

Проблема в следующем: как добавить jQuery и плагин сортировщика таблиц в этот файл .js?

Я пробовал что-то вроде этого:

document.writeln('<script src="/javascripts/jquery.js" type="text/javascript"></script>');
document.writeln('<script type="text/javascript" src="/javascripts/jquery.tablesorter.js"></script>');

но это, похоже, не работает.

Каков наилучший способ сделать это?

Ответы [ 16 ]

1 голос
/ 01 декабря 2010

Если вы часто хотите обновить ссылку на свой файл jquery на файл новой версии, по всему сайту на многих страницах, сразу ...

Создайте файл javascript (.js) и вставьте нижекод и сопоставьте этот файл javascript со всеми страницами (вместо сопоставления файла jquery непосредственно на странице), поэтому при обновлении ссылки на файл jquery на этот файл javascript он будет отражаться на сайте.

Нижекод протестирован и работает хорошо!

document.write('<');
document.write('script ');
document.write('src="');
//next line is the path to jquery file
document.write('/javascripts/jquery-1.4.1.js');
document.write('" type="text/javascript"></');
document.write('script');
document.write('>');
0 голосов
/ 17 апреля 2019

После большого количества исследований я решаю эту проблему с подсказкой ofir_aghai ответа о событии загрузки скрипта.

В основном нам нужно использовать $ для кода JQuery, но мы не можем использовать его, пока не будет загружен JQuery. Я использовал document.createElement для добавления скрипта для JQuery, но проблема в том, что загрузка занимает некоторое время, пока следующий оператор в javascript, использующий $ fails. Поэтому я использовал приведенное ниже решение.

myscript.js имеет код, который использует JQuery main.js используется для загрузки как файла jquery js, так и файла myscript.js, обеспечивающего загрузку jquery.

код main.js

window.load = loadJQueryFile();
var heads = document.getElementsByTagName('head');

function loadJQueryFile(){
    var jqueryScript=document.createElement('script');
    jqueryScript.setAttribute("type","text/javascript");
    jqueryScript.setAttribute("src", "/js/jquery.min.js");

    jqueryScript.onreadystatechange = handler;
    jqueryScript.onload = handler;  
    heads[0].appendChild(jqueryScript);
}

function handler(){
    var myScriptFile=document.createElement('script');
    myScriptFile.setAttribute("type","text/javascript");
    myScriptFile.setAttribute("src", "myscript.js");
    heads[0].appendChild(myScriptFile);
 }

Таким образом, это работало. Использование loadJQueryFile () из myscript.js не сработало. Это немедленно идет к следующему утверждению, которое использует $.

0 голосов
/ 19 октября 2015

Я считаю, что лучше всего использовать это ...

**<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>**

Это из проекта Codecademy «Создай интерактивный сайт».

0 голосов
/ 17 июля 2009

просто скопируйте код из двух файлов в ваш файл вверху.

или используйте что-то подобное http://code.google.com/p/minify/ для динамического объединения файлов.

Josh

0 голосов
/ 17 июля 2009

Если document.write ('<\ script ...') не работает, попробуйте document.createElement ('script') ... </p>

Кроме этого, вам следует беспокоиться о типе веб-сайта, который вы создаете - действительно ли вы считаете целесообразным включать файлы .js из файлов .js?

0 голосов
/ 17 июля 2009

Почему вы используете Javascript для написания тегов скрипта? Просто добавьте теги скрипта в ваш головной раздел. Таким образом, ваш документ будет выглядеть примерно так:

<html>
  <head>
    <!-- Whatever you want here -->
    <script src="/javascripts/jquery.js" type="text/javascript"></script>
    <script src="/javascripts/jquery.tablesorter.js" type="text/javascript"></script>
  </head>
  <body>
    The contents of the page.
  </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...