如何动态替换iframe脚本标记

时间:2016-12-29 09:50:45

标签: javascript jquery

我正在尝试在iFrame标记之后插入脚本标记。在这里,我想找到一个带有数据破折号属性的脚本标记,并在添加脚本标记之后用iframe替换该元素。

这是我的代码,但不起作用。

(function ($) {
var target = $("script[id=token]");
var iframe = $('<iframe>', {
    src: "//" + getHostName(target.attr("src")) ,
    name: "MyFrame",
    class: 'Myforms ' + target.attr("data-unique"),
    frameborder: "0",
    scrolling: "no"        
}).insertAfter($('<span>'));

target.replaceWith(iframe);

function getHostName(url) {
    var l = document.createElement("a");
    l.href = url;
    return l.host;
}

})(jQuery);

1 个答案:

答案 0 :(得分:-1)

请在下面找到一个工作示例,根据bbc.com上不存在的脚本的URL获取BBC的主页。

您不需要insertAfter($('<span>')),但也不应该导致错误。

function getHostName(url) {
  var l = document.createElement("a");
  l.href = url;
  return l.host;
}

(function ($) {
  var target = $("script[id=token]");
  var iframe = $('<iframe>', {
    src: "//" + getHostName(target.attr("src")),
    name: "MyFrame",
    class: 'Myforms ' + target.attr("data-unique"),
    frameborder: "0",
    scrolling: "no"        
  });

  target.replaceWith(iframe);
})(jQuery);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script id="token" src="http://www.bbc.com/nonexistingscript.js" data-unique="gnjrls"></script>

要进行故障排除,请检查您的目标是否允许框架,例如通过测试iframe在手动添加到HTML时加载。另请注意,如果您在没有网络服务器的情况下进行本地测试,则无协议的iframe网址"//" + getHostName(target.attr("src"))不起作用,即地址栏中显示的网址以file:///开头。