的JavaScript。使用getElementById将脚本放在div中

时间:2012-03-03 14:57:49

标签: javascript javascript-events video-streaming innerhtml video-processing

简单地说,当用户点击诸如" 480p"之类的javascripted文本时,我希望该文本激活一个javascript函数,该函数只是将一个视频播放器的脚本放入div中,然后加载另一个不同质量的视频。

YouTube是一个很好的例子。回到youtube年轻的时候,如果你想改变质量,玩家就会被重置。

在我的javascript函数中,我有document.getElementById('videoplayer').innerHTML="<script language=\"JavaScript\">flowplayer(\"player\", \"swf location\", {clip:{data}}); </scr"+"ipt>";

当我这样做时,它会用我的数据覆盖div,但脚本不会在div中播放/激活,这将使用新流重新加载视频播放器

任何提示?

谢谢,

3 个答案:

答案 0 :(得分:1)

为什么不使用createElement?

<html>
<head>
<script type="text/javascript">
function doit() {
  var script = document.createElement("script");
  script.type = "text/javascript";
  script.innerHTML = "flowplayer(\"player\", \"swf location\", {clip:{data}});";
  document.getElementById('videoplayer').appendChild(script);
}
</script>
</head>
<body>
<div id="videoplayer">...</div>
<input type="button" value="doit" onclick="doit()" />
</body>
</html>

答案 1 :(得分:0)

由于您已经在执行javascript以修改DOM,为什么不直接调用该函数?

而不是

document.getElementById('videoplayer').innerHTML="<script language=\"JavaScript\">flowplayer(\"player\", \"swf location\", {clip:{data}}); </scr"+"ipt>";

只是做

flowplayer("player", "swf location", {clip:{data}});

答案 2 :(得分:-1)

当你需要在DIV中生成AJAX答案时使用eval() 并且不要忘记并非所有浏览器都支持createElement