繁体   English   中英

在iframe中运行JavaScript

[英]Running javascript in iframe

如何将脚本添加到iframe

我写了一些东西:

doc = $frame[0].contentDocument ||  $frame[0].contentWindow.document;
$body = $("body", doc);
$head = $("head", doc);
$js = $("<script type='text/javascript' />");
$js[0].type = "text/javascript";
$head.append($js);

这是我的功能正在正常工作textarea keyup事件。

function addJS() {
  js = js_textarea.val();
  $js.html(js);             
}

但是,这不起作用,代码是否已添加到脚本标签,但未运行浏览器? 我怎么解决这个问题。 (我已经尝试过eval()

编辑,这些是我的代码:

$frame = $('<iframe id="frame">');
$("#preview").html($frame);

doc = $frame[0].contentDocument ||  $frame[0].contentWindow.document;

$body = $("body", doc);
$head = $("head", doc);

$js = $("<script type='text/javascript' />");
$js[0].type = "text/javascript";

$head.append($js);

htmlEditor.on("change", function() {
    addJS();
});

function addJS() {
    js = $("#js_textarea").val();
    $js.html(js); 
}

这是行不通的。 脚本是不可变的。 在将脚本附加到DOM时,将解析并评估脚本的“ HTML”。 之后,您甚至可以删除脚本标签,脚​​本本身仍将起作用。 因此,更改脚本文本也不会导致新脚本被解析和执行。

您可以在script标记中添加一些内容,然后再将其附加到DOM。 您可以通过在添加$js之前$js下行插入代码中来进行测试。

$js.html('alert("foo");');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM