Динамическое подключение JS (DOM manipulation)

igortik

Новичок
Есть идеи почему на работает (для всего, кроме FireFox)

PHP:
$('<script type="text/javascript" src="js/games/game_'+game+'.js" defer="defer"></script>').appendTo('#game');
в то время, как

PHP:
 $.getScript('js/games/game_'+game+'.js');
работает, получая скрипт аякс-запросом...

P.S. Также советую почитать http://stackoverflow.com/questions/610995/jquery-cant-append-script-element

А Ваше мнение какое, что лучше использовать?
 

igortik

Новичок
И еще появилась проблема вставки css налету, вставляемым таким же методом, только уже не из предка, а из потомка.
имеется ввиду, что подключаемый JS скрипт методом, описанным выше, также инициирует
PHP:
$('<link rel=stylesheet type="text/css" href="css/games/hangman.css">').prependTo('#game');
что, естественно, только в IE всех версий не работает :)
 

igortik

Новичок
Работает только дедовским методом:

PHP:
var css = document.createElement("link");
css.rel  = "stylesheet";
css.type  = "text/css";
css.href   = "css/games/hangman.css";
document.body.appendChild(css);
 

dimagolov

Новичок
если дедовским методом работает, то причина, очевидно, в коде jQuery, который оказался кривым, или в кривом его использовании не по назначению.
 

igortik

Новичок
если дедовским методом работает, то причина, очевидно, в коде jQuery, который оказался кривым, или в кривом его использовании не по назначению.
С кривостью рук проблем нет.
Да и в JQuery ничего сложного в использовании метода append() и аналогичных тоже нет. (однострочные решения приведены выше)

Проблема проявляется в разных браузерах.
Предположу, что ее суть в коде JQuery, т.к. "дедовский метод" создает конкретный элемент с конкретными свойствами (атрибутами) и вставляет его в DOM, в то время, как append() и ему подобные вставляет заданный html-код в DOM.

P.S. Оба метода делают тоже самое, но JQuery с ошибкой в IE.
 

dimagolov

Новичок
Оба метода делают тоже само
не правда Ваша. Делают они СОВЕРШЕННО разное. код jQuery вставляет html код, который должен быть распарсен браузером и исполнен, а "дедовский" создает DOM элемент на-прямую. Разница принципиальная и jQuery вообще не при чем.
 
Сверху