2012-03-27 4 views
0

Мне нужно поместить весь следующий код в javascript под названием activ.js. Можете ли вы сказать мне, как это сделать?Вызов javascript из javascript

<script type="text/javascript" src="http://domain.com/tyr1.js"></script> 
<script type="text/javascript"> 
var int = new int({ 
    seconds: 30, 
    markUser: true, 
    markPeriod: 0 
}); 
pop.add("http://www.google.com", "google", "0"); 
pop.add("http://www.yahoo.com", "yahoo", "1"); 
pop.add("http://www.bing.com", "bing", "2"); 
pop.show(); 
</script> 
+0

Короче говоря, без ручного комбинирования кода, поскольку @Andrew предлагает, вы не можете делать то, что хотите, поскольку сам JavaScript не имеет механизма для включения других файлов JavaScript. Это нужно сделать в HTML с элементом 'script'. Сказав это, ваш activ.js может потенциально создать элементы 'script' в DOM, запросив соответствующие файлы. – MrWhite

+0

Спасибо, Джош, не могли бы вы рассказать мне, как? – user1289292

ответ

0

Откройте этот файл: http://domain.com/tyr1.js

Скопируйте и вставьте содержимое в текстовый документ (без <script> тегов). Затем скопируйте и вставьте ниже него:

var int = new int({ 
    seconds: 30, 
    markUser: true, 
    markPeriod: 0 
}); 
pop.add("http://www.google.com", "google", "0"); 
pop.add("http://www.yahoo.com", "yahoo", "1"); 
pop.add("http://www.bing.com", "bing", "2"); 
pop.show(); 

Наконец, сохранить текстовый документ как activate.js. Это лучший способ, я могу это сделать :)

+0

Мне нужен только этот код в js. Я не хочу смешивать его. – user1289292

2

Как уже упоминалось в моем комментарии выше, вы не можете делать то, что хотите, поскольку сам JavaScript не имеет механизма для включения других файлов JavaScript. Файлы JavaScript включены в документ, используя элемент HTML-скрипта.

Однако мы могли бы написать один скрипт («active.js»), который мы включаем в документ, и это вручную создает дополнительный скриптовый элемент для каждого внешнего файла JavaScript. Следует, однако, отметить, что это может ухудшить производительность, поскольку мы создаем дополнительные HTTP-запросы.

Я думаю, вам также понадобится отделить ваш текущий встроенный скрипт во внешний файл, чтобы избежать сценария «курица против яйца», где вы ссылаетесь на элементы «tyr1.js» перед его загрузкой.

Так что ваш «active.js» сценарий становится чем-то вроде:

/** 
* Combined JavaScript files (active.js) 
* - Creates script elements for any additional JS files 
*/ 
(function() { 
    var head = document.getElementsByTagName('head')[0]; 

    // Scripts to include 
    var js = [ 
     'http://domain.com/tyr1.js', 
     '/inline.js' /* Change path to where this is located */ 
    ]; 

    // Clone for every external script that needs to be included 
    var jsElem = document.createElement('script'); 
    jsElem.type = 'text/javascript'; 

    // Step through scripts to include 
    for (var i=0; i<js.length; i++) { 
     var newJsElem = jsElem.cloneNode(false); 
     newJsElem.src = js[i]; 

     // Append to HEAD section 
     head.appendChild(newJsElem); 
    } 
})() 

Это, конечно, предполагает сценарии должны быть помещены в головной части документа.

+0

Спасибо человек. Я попробую это. – user1289292