Как включить JS из URL в другой JS? [Дубликат]

Поля бит будут храниться в другом порядке в зависимости от конечности машины, в некоторых случаях это может не иметь значения, но в других это может иметь значение. Скажем, например, что ваша структура ParsedInt представляла флаги в пакете, отправленном по сети, небольшая машина endian и машина большого конца читают эти флаги в другом порядке от переданного байта, что, очевидно, является проблемой.

31
задан Rob W 28 December 2011 в 00:05
поделиться

8 ответов

document.getElementsByTagName("head")[0].appendChild(fileref‌​) не работает, если у вас есть документ document.ready () работает inline. $("head").append(fileref); отлично работает для меня, хотя ему нужна jquery.min.js встроенная ссылка.

<head>
    <!-- Meta, title, CSS, favicons, etc. -->
    <script src="script/jquery.min.js"></script>
    <script src="script/master_load.js"></script>
    <script>
        load_master_css();
        load_master_js();
    </script>
</head>

и master_load.js:

function loadjscssfile(filename) {
    if (filename.substr(filename.length - 4) == ".css") { // 'endsWith' is not IE supported.
        var fileref = document.createElement("link")
        fileref.setAttribute("rel", "stylesheet")
        fileref.setAttribute("href", filename)
        //fileref.setAttribute("type", "text/css")
    }
    else if (filename.substr(filename.length - 3) == ".js") {
        var fileref = document.createElement('script')
        fileref.setAttribute("src", filename)
        //fileref.setAttribute("type", "text/javascript")
    }
    $("head").append(fileref);
}
function load_master_css() {
    loadjscssfile("css/bootstrap.min.css");
    // bunch of css files
}
function load_master_js() {
    loadjscssfile("script/bootstrap.min.js");
    // bunch of js files
}
0
ответ дан AmirHossein Manian 17 August 2018 в 10:27
поделиться

Чтобы загрузить файл .js или .css динамически, в двух словах, это означает использование методов DOM, чтобы сначала создать шикарный новый элемент «SCRIPT» или «LINK», присвоить ему соответствующие атрибуты и, наконец, использовать элемент. appendChild (), чтобы добавить элемент в нужное место в дереве документов. Это звучит намного больше, чем на самом деле. Давайте посмотрим, как все это объединяется:

function loadjscssfile(filename, filetype){
 if (filetype=="js"){ //if filename is a external JavaScript file
  var fileref=document.createElement('script')
  fileref.setAttribute("type","text/javascript")
  fileref.setAttribute("src", filename)
 }
 else if (filetype=="css"){ //if filename is an external CSS file
  var fileref=document.createElement("link")
  fileref.setAttribute("rel", "stylesheet")
  fileref.setAttribute("type", "text/css")
  fileref.setAttribute("href", filename)
 }
 if (typeof fileref!="undefined")
  document.getElementsByTagName("head")[0].appendChild(fileref)
}

loadjscssfile("myscript.js", "js") //dynamically load and add this .js file
loadjscssfile("javascript.php", "js") //dynamically load "javascript.php" as a JavaScript file
loadjscssfile("mystyle.css", "css") ////dynamically load and add this .css file

я надеюсь, что его использование будет полным

36
ответ дан Anand Thangappan 17 August 2018 в 10:27
поделиться
  • 1
    Большое вам спасибо за ваши усилия. Это похоже на добавление сценария один за другим. – Hoque 23 April 2011 в 13:06
  • 2
    Что такое поддержка браузера? – Pacerier 7 May 2014 в 10:44
  • 3
    u нужно добавить document.body.appendChild (fileref); заставить его работать в браузере – Siddharth 3 October 2015 в 21:24
  • 4
    Помните , что файлы могут не загружаться (и запускаться) в том порядке, в котором вы их вызываете. – kevnk 8 September 2016 в 20:47
  • 5
    document.getElementsByTagName (& quot; head & quot;) [0] .appendChild (fileref) не работает, если у вас есть документ document.ready () работает внутри. $ («head»). append (fileref); отлично работает для меня, хотя для него требуется jquery.min.js встроенная ссылка. – AmirHossein Manian 11 March 2017 в 08:37

Следуя советам комментариев Salaman A , я нашел, как Google делает это сейчас с Analytics: https://developers.google.com/analytics/devguides/collection/gajs/asyncTracking

И вот более общая версия того же кода:

(function() {
    var s = document.createElement('script'); // Create a script element
    s.type = "text/javascript";               // optional in html5
    s.async = true;                           // asynchronous? true/false
    s.src = "//example.com/your_script.js"; 
    var fs = document.getElementsByTagName('script')[0];  // Get the first script
    fs.parentNode.insertBefore(s, fs);
})();
0
ответ дан Community 17 August 2018 в 10:27
поделиться

существует много разных способов, но способ загрузки дополнительных скриптов Google выглядит следующим образом:

function getScript(src) {
    document.write('<' + 'script src="' + src + '"' +
                   ' type="text/javascript"><' + '/script>');
}

Это берется непосредственно из загрузчика карт Google.

Написание тега скрипта непосредственно в документе является самым простым и эффективным способом.

4
ответ дан herostwist 17 August 2018 в 10:27
поделиться
  • 1
    Google сам по себе больше не рекомендует :) например, они изменили рекомендуемый способ добавления кода Google Analytics на веб-сайты. – Salman A 23 April 2011 в 08:06
  • 2
    вы могли бы предоставить ссылку на спину, так как все apis google загружены таким образом, даже code.google.com/apis/loader – herostwist 23 April 2011 в 08:30
  • 3
    Там вы идете: Использование традиционного фрагмента . Прочтите вводный параграф, в котором говорится, что мы рекомендуем использовать фрагмент кода отслеживания по умолчанию, описанный в разделе «Отслеживание сайтов» . Унаследованный скрипт (точнее, загрузчик сценария) использует document.write, обновленный скрипт использует document.createElement. Вот еще одно интересное: Избегайте document.write – Salman A 23 April 2011 в 11:40
  • 4
    интересно читать. вы действительно на самом деле получаете, когда вы загружаете скрипты асинхронно таким образом, что отлично, если вы используете обратный вызов. Я думаю, это зависит от того, нужны ли ваши скрипты, загруженные в занавес. – herostwist 23 April 2011 в 18:05
  • 5
    LOL благодарит за downvote через 3 1/2 года после ответа - неудивительно, что все изменилось, так как я написал этот ответ. – herostwist 18 September 2014 в 11:49

Чтобы добавить новый файл javascript динамически:

function includeJS(jsFile) {
    $('head').append($('<script>').attr('type', 'text/javascript').attr('src', jsFile));
}


// Pick a JS to load
if ($.browser.msie) {
    includeJS('first.js');
} else {
    includeJS('second.js');
}
includeJS('third.js');
1
ответ дан Justin808 17 August 2018 в 10:27
поделиться
  • 1
    Если вы загрузили jQuery, просто используйте jQuery.getScript (). – Richard 29 July 2013 в 13:22

Мы можем быстро расширить это, чтобы обратный вызов можно было выполнить после добавления скрипта.

function loadjscssfile(filename, filetype, callback){
    if (typeof fileref!="undefined") {
        document.getElementsByTagName("head")[0].appendChild(fileref);
        callback();
    }
}
0
ответ дан Phillip Senn 17 August 2018 в 10:27
поделиться
  • 1
    Я сомневаюсь, что это вообще работает ... Вы передаете filename и filetype, которые вы не используете, и используйте fileref, которые вы не объявляете ... – GôTô 14 January 2016 в 15:10
  • 2
    Извините, мой комментарий был в отношении ответа Ананда Тхангаппана выше. Я думал, что сделал это замечанием, а не новым ответом. – Dennis Bartlett 5 April 2016 в 18:04

Я видел, что делает этот загрузчик. Что он делает, так это то, что он проходит через все теги сценария в документе, чтобы найти тот, который загружал себя, например:

<script src="/path/to/single.js?files=first.js,second.js,third.js"></script>

Затем он анализирует запрос, используемый внутри атрибута src, и динамически создает дополнительные теги скриптов для каждого файла сценария. В то же время он также анализирует путь базового скрипта (/path/to/single.js) и использует тот же путь для загрузки файлов зависимостей (например, /path/to/first.js).

Вы можете создать свой собственный загрузчик сценариев, подобный этому , В ванильном javascript вы можете использовать следующие функции:

Ананд Тхангаппан опубликовал решение, которое использует эти функции. Если вы используете фреймворк, такой как jQuery или MooTools, то оба предоставляют свои собственные реализации динамической загрузки JsvaScript.

Наконец, для вашей проблемы существует серверное решение. Посмотрите на minify . Объединяет и минимизирует несколько файлов CSS или JavaScript в одну загрузку.

1
ответ дан Salman A 17 August 2018 в 10:27
поделиться

Вы можете использовать функцию jQuery.getScript() ... Я думаю, вам будет намного легче с этим включить файл JavaScript .js.

Здесь является ссылкой.

13
ответ дан SharpC 17 August 2018 в 10:27
поделиться
  • 1
    Я думаю, что это текст, который я буду использовать для всех моих ссылок на SO. – sdleihssirhc 22 April 2011 в 05:23
  • 2
    jQuery.getScript () действительно здорово добавить скрипт по требованию. – Hoque 23 April 2011 в 13:04
Другие вопросы по тегам:

Похожие вопросы: