Możesz to zrobić za pomocą adresu URL danych. Obejmuje to cały dokument w jednym ciągu HTML. Na przykład następujący kod HTML:
<html><body>foo</body></html>
można zakodować w ten sposób:
data:text/html;charset=utf-8,%3Chtml%3E%3Cbody%3Efoo%3C/body%3E%3C/html%3E
a następnie ustaw jako src
atrybut elementu iframe. Przykład .
Edycja: Inną alternatywą jest zrobienie tego za pomocą JavaScript. Jest to prawie na pewno technika, którą wybrałbym. Nie możesz zagwarantować, jak długo adres URL danych zaakceptuje przeglądarka. Technika Javascript wyglądałaby mniej więcej tak:
var iframe = document.getElementById('foo'),
iframedoc = iframe.contentDocument || iframe.contentWindow.document;
iframedoc.body.innerHTML = 'Hello world';
Przykład
Edycja 2 (grudzień 2017) : użyj atrybutu srcdoc HTML5 , tak jak w odpowiedzi Saurabh Chandra Patel , która teraz powinna być zaakceptowaną odpowiedzią! Jeśli potrafisz skutecznie wykryć IE / Edge , wskazówką jest użycie biblioteki srcdoc-polyfill tylko dla nich oraz atrybutu „pure” srcdoc we wszystkich przeglądarkach innych niż IE / Edge (sprawdź caniuse.com dla pewności).
<iframe srcdoc="<html><body>Hello, <b>world</b>.</body></html>"></iframe>
Blocked a frame with origin "http://localhost" from accessing a cross-origin frame
.innerHTML
przeglądarki, nie będzie wykonywał podrzędnych tagów skryptów. Aby uzyskać więcej informacji, zapoznaj się z sekcją dotyczącą kwestii bezpieczeństwa na stronie Element.innerHTML MDN.użyj
html5
nowego atrybutusrcdoc
(srcdoc-polyfill) DocsObsługa przeglądarek - przetestowano w następujących przeglądarkach:
źródło
Według W3Schools, HTML 5 pozwala to zrobić za pomocą nowego atrybutu „srcdoc” , ale obsługa przeglądarki wydaje się bardzo ograniczona.
źródło