2016-05-18 6 views
0

Ich habe eine HTML-Zeichenfolge. Und ich stelle diese Saite in einen Iframe. Der Code istmanipulieren HTML String vor dem Einfügen in DOM

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(); 

Nun, was ich will ist ein Tag

<base href="some url" > 

in den Kopf des htmlString tun einzufügen. Und dann möchte ich den iframe in das dom einfügen und den htmlString in diesen iframe schreiben.

Wie man den htmlString vor dem Einfügen in Iframe maniaplate?

Antwort

1

Hier gehen Sie: https://jsfiddle.net/tjcwyem6/

ich folgende JavaScript verwendet:

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); 

Meine Änderungen wie folgt vor:

  1. Speichern Sie Ihre URL-Wert in newurl.
  2. Setzen Sie das in eine Zeichenfolge basehref.
  3. Holen Sie sich den Platz in Ihrer HTML-Zeichenfolge, wo </head> ist.
  4. Fügen Sie basehref zu newhtml hinzu, indem Sie die Schnüre schneiden und verbinden.
0

Sie können in der Lage sein iframe Inhalte mit Jquery wie anhängen -

$("iframe").contents().find("head").append('<base href="some url" >'); 
+0

Obwohl dies sauberer und natürlicher ist, wird die Zeichenfolge vor dem Einfügen in den Iframe nicht manipuliert. –

0

Sie können manipulieren, um die html, indem sie in jquery als XML und mit Jquery Laden zu manipulieren:

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 für xml to html Details

Sie können die HTML nicht als HTML in Jquery laden, wie es Körper/Kopf streift.

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); 
Verwandte Themen