我想知道是否可以使用eval(或jQuery的getScript的某些变体)将外部javascript定位在DOM结尾或者头部以外的位置。我试过了:
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(因此我无法真正引用 new 外部JS文件 - 我宁愿运行一个eval,这并不理想。)
我想最糟糕的情况是使用PHP或其他东西将用户输入保存到“新”文件中,并使用指向该新PHP文件的getScript,但它看起来非常黑客。
再次感谢你!
答案 0 :(得分:3)
您引用的“JavaScript工具包”是否使用document.write
或document.writeln
将输出插入到页面中?如果是这样,您可以覆盖该函数以将脚本输出附加到正确的位置:
document.write = function(s) {
$('#fig').append(s);
};
document.writeln = function(s) {
$('#fig').append(s + '\n');
};
然后使用$.getScript
加载并执行脚本。
编辑:这是一种更强大的方法,具体取决于代码的添加方式:
var output = '';
document.write = function(s) {
output += s;
};
document.writeln = function(s) {
output += s + '\n';
};
$.getScript('URL of script here', function() {
$('#fig').append(output);
});