将块从text/plain转换为text/javascript并执行它
我的问题如下。 我有多个脚本块,其中包含text/plain类型的javascript代码。 所以我的问题是,有没有脚本可以动态地将它们从text/plain转换为text/javascript类型并执行其内容?我遇到的问题是执行的位置,因为脚本包含document.write,所以输出附加在html的末尾,而不是脚本本身的位置 让我们这样说吧将块从text/plain转换为text/javascript并执行它,javascript,plaintext,Javascript,Plaintext,我的问题如下。 我有多个脚本块,其中包含text/plain类型的javascript代码。 所以我的问题是,有没有脚本可以动态地将它们从text/plain转换为text/javascript类型并执行其内容?我遇到的问题是执行的位置,因为脚本包含document.write,所以输出附加在html的末尾,而不是脚本本身的位置 让我们这样说吧 <script type="text/plain">alert('hello world');</script> <scr
<script type="text/plain">alert('hello world');</script>
<script type="text/javascript">
$(document).ready(function(){
$("script[type*=plain]").each(function() {
$(this).attr('type','text/javascript');
});
});
</script>
alert('hello world');
$(文档).ready(函数(){
$(“脚本[type*=plain]”)。每个(函数(){
$(this.attr('type','text/javascript');
});
});
thnx在适当的位置修改
脚本
元素不会导致执行它。您需要创建具有适当内容的新脚本元素。另一个选项是eval()
旧元素的内容:
$(document).ready(function(){
$("script[type*=plain]").each(function() {
eval($(this).text());
});
});
您可以使用一些讨厌的方法,选择type=plain的标记,然后访问其innerText属性,将其分配给eval方法
var el = $("script[type*=plain]")[0];
eval(el.innerText);
但我会尽力的
如果有不同的方法,我不知道,对此我很抱歉。您不能制作
文档。如果更改脚本的类型,请编写以将其输出替换为
元素,因为每次添加新的
或评估现有代码时,整个页面的javascript代码不会重新运行。
如果要用脚本执行的结果替换
,可以从该脚本返回一些字符串,而不是使用文档。编写,然后插入此字符串以代替
元素:
<script type="text/plain">
var result = "line1<br>";
result += "line2";
alert('hello world');
result
</script>
<script type="text/javascript">
$(document).ready(function(){
$("script[type*=plain]").each(function() {
$(this).replaceWith(eval($(this).text()));
});
});
</script>
var result=“line1
”;
结果+=“第2行”;
警报(“你好世界”);
结果
$(文档).ready(函数(){
$(“脚本[type*=plain]”)。每个(函数(){
$(this.replacetwith(eval($(this.text()));
});
});
我确实用document.createElement和replaceChild尝试过,但问题是执行的地方。你能把你尝试过的添加到你的问题中,并用小提琴演示一下吗?我创建了一个JS函数,它在每个文本/纯脚本块后调用。这是我想出的最简单的解决办法。虽然不是最优雅的,但仍然是。