【问题标题】:How to append <script> tags in jquery如何在 jquery 中附加 <script> 标签
【发布时间】:2019-02-25 21:50:55
【问题描述】:

我正在尝试将标签附加到 iframe 中,但 jQuery 似乎会自动删除标签。我做了一些研究,发现这是为了保持 DOM 干净。

有没有办法以某种方式解决这个问题?


我的 HTML 代码:

<div class="card-body">
<div class="sources">
    <textarea class="col-md-4 innerbox html editorviewfont"></textarea>
    <textarea class="col-md-4 innerbox css editorviewfont"></textarea>
    <textarea class="col-md-4 innerbox js editorviewfont"></textarea>
</div>
<div class="col-md-12 innerbox preview editorviewfont">
    <iframe id="previewtarget">
         <div id="source" contenteditable="true">
             <!DOCTYPE html>
             <html lang="en">
                 <head>
                     <meta charset="utf-8">
                 </head>
                 <body>
                 </body>
             </html>
         </div>
    </iframe>
</div>

我的 JavaScript 代码

$(function(){
function GetHtml(){
    var html = $('.html').val();
    return html;
}
function GetCSS(){
    var Css = $('.css').val();
    return Css;
}
function GetJS(){
    var js = $('.js').val();
    return js;
}
$('.innerbox').live("keyup",function(){
    var targetp = $('#previewtarget') [0].contentWindow.document;
    targetp.open();
    targetp.close();

    var gethtml = GetHtml();
    var getcss = GetCSS();
    var getjs = GetJS();

    var javascriptinject = document.createElement("script");

    javascriptinject.src = getjs;

    $('body',targetp).append(gethtml);
    $('head',targetp).append('<style>' + getcss + '</style>');
    $('head',targetp).append(javascriptinject);
})
});

【问题讨论】:

  • umm .live() 已被弃用 10 年...
  • 我已经解决了这个问题。除了附加 javascript 外,一切正常

标签: javascript jquery iframe append script-tag


【解决方案1】:

您是否同时控制了这两个域?一个有 iframe,一个有 iframe 的内容?

也许有人可以纠正我,但我认为您在尝试将脚本注入到不在同一域中的 iframe 时会遇到跨站点脚本问题。

更多信息可以在这篇文章中找到:

inject a javascript function into an Iframe

【讨论】:

  • 它在一个域中。我正在尝试创建一个沙盒 sn-pcode 工具。有 3 个文本区域,一个用于 html,一个用于 css,一个用于 javascript。 html 和 css 加载得很好,但是当尝试加载 javascript 时,脚本标签将被自动删除
  • @WiboKuipers 当您不创建“脚本元素”而将“getjs”字符串包装在两个(字符串)脚本标签中时会发生什么?这样您就可以在文本字段中放置一个字符串。就在这里吐个球吧。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-02
  • 2012-03-13
  • 1970-01-01
  • 2020-12-15
  • 2011-04-06
相关资源
最近更新 更多