2010-11-20 4 views
2

Мне было интересно, можно ли использовать eval (или некоторый вариант jScript-кода jQuery) для размещения внешнего javascript в местах, отличных от конца DOM или во главе. Я пробовал:getScript или eval в определенном месте?

var head = document.getElementById("fig"); 

вместо

var head = document.getElementsById("head")[0]; 

с

var script = document.createElement("script"); 
script.text = $(".code").val(); 
head.appendChild(script); 

Но я не могу заставить его работать независимо. (Код работает, но Firebug показывает код заменяется как на #fig и в конце страницы, прямо перед </body> тегом.

В основном инструментарий JavaScript Я использую делает вещи, основываясь на том, где тэге , и я пытаюсь динамически модифицировать javascript на основе ввода пользователем (следовательно, я не могу действительно ссылаться на внешний внешний файл JS-файла - я бы предпочел запустить eval, что не идеально).

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

Еще раз спасибо!

ответ

3

Используется ли «Инструментарий JavaScript» для использования вывода document.write или document.writeln для ввода вывода на страницу? Если да, то вы можете переопределить эту функцию, чтобы добавить вывод скрипта в нужное место:

document.write = function(s) { 
    $('#fig').append(s); 
}; 

document.writeln = function(s) { 
    $('#fig').append(s + '\n'); 
}; 

, а затем загрузить и выполнить скрипт, используя $.getScript.

Edit: Более надежный способ сделать это, в зависимости от того, как добавляется код:

var output = ''; 

document.write = function(s) { 
    output += s; 
}; 

document.writeln = function(s) { 
    output += s + '\n'; 
}; 

$.getScript('URL of script here', function() { 
    $('#fig').append(output); 
}); 
+0

Genius идеи! Я думаю, что это хороший пример «мышления вне коробки» и подсказки шляпы! – Rio

Смежные вопросы