我有一个htmlString。我将该字符串放入iframe中。 代码是
var iframe = document.createElement('iframe');
var html = '<html> <head></head> <body> //contents </body> </html>';
document.body.appendChild(iframe);
iframe.contentWindow.document.open();
iframe.contentWindow.document.write(html);
iframe.contentWindow.document.close();
现在我要做的是插入标签
<base href="some url" >
进入htmlString的头部。然后我想将iframe附加到dom中并将htmlString写入iframe。
如何在将htmlString插入iframe之前对其进行操作?
答案 0 :(得分:1)
在这里:https://jsfiddle.net/tjcwyem6/
我使用了以下JavaScript:
var iframe = document.createElement('iframe'),
html = '<html> <head></head> <body> //contents </body> </html>',
newurl = "https://www.facebook.com/",
basehref = "<base href='" + newurl + "'>",
n = html.indexOf("</head>");
var newhtml = [html.slice(0, n), basehref, html.slice(n)].join('');
document.body.appendChild(iframe);
iframe.contentWindow.document.open();
iframe.contentWindow.document.write(newhtml);
iframe.contentWindow.document.close();
console.log(newhtml);
我的修改执行以下操作:
newurl
。basehref
。</head>
所在的HTML字符串中的位置。basehref
添加到newhtml
。答案 1 :(得分:0)
您可以使用jquery(例如
)追加iframe内容$("iframe").contents().find("head").append('<base href="some url" >');
答案 2 :(得分:0)
你可以通过将html加载到jquery中来操作html,并使用jquery来操作:
var xml = $.parseXML("<html> <head></head> <body> //contents </body> </html>");
$("head", xml).append("<base url='x'/>")
var html;
if (window.ActiveXObject) {
html = xml.xml;
} else {
html = (new XMLSerializer()).serializeToString(xml);
}
iframe.contentWindow.document.write(html);
This answer用于xml到html的详细信息
你不能将html作为html加载到jquery中,因为它会剥离body / head。
答案 3 :(得分:0)
String.prototype.insertAt=function(index, string) {
return this.substr(0, index) + string + this.substr(index);
}
var myhtml = "<html> <head></head> <body></body> </html>";
var m = myhtml.indexOf("</head>");
myhtml = myhtml.insertAt(m, '<base href="some url" >');
console.log(myhtml);