1

小提琴!如何运行存储在 html 中的脚本?我不想把它从功能中拿出来......

HTML:

<script type="hbrData">
function(){
    var x = 22;
    alert('hi');
}
</script>

JS:

var script = $('script[type="hbrData"]').text();

$('body').append(script);

script();                  // Uncaught TypeError: string is not a function 
4

4 回答 4

1

在 html 中给你的函数一个函数名,你可以从 javascript 调用它:

HTML

<script>
function HelloWorld() {
    var x = 22;
    alert('hi');
}
</script>

Javascript

HelloWorld();

演示

于 2013-08-07T03:41:21.190 回答
1

如果您有充分的理由这样做,请使用eval

var script = $('script[type="hbrData"]').text();

eval('(' + script + ')')();
于 2013-08-07T02:39:11.557 回答
0

你可以这样做

HTML:

<script type="hbrData">
    var x = 22;
    alert('hi');
</script>

JS:

var script = $('script[type="hbrData"]').text();
var fn = new Function (script) ;
fn() ;

这样可以避免eval.

请注意,我已将 HTML 从匿名函数定义更改为仅两行脚本。不知道你是否愿意这样做。

于 2013-08-07T03:03:33.870 回答
0
$.globalEval("("+script+")()");
于 2013-08-07T02:40:02.560 回答