<iframe id="id_description_iframe" class="rte-zone" height="200" frameborder="0" title="description">
<html>
<head></head>
<body class="frameBody">
test<br/>
</body>
</html>
</iframe>
Ne almak istiyorum:
test<br/>
<iframe id="id_description_iframe" class="rte-zone" height="200" frameborder="0" title="description">
<html>
<head></head>
<body class="frameBody">
test<br/>
</body>
</html>
</iframe>
Ne almak istiyorum:
test<br/>
Yanıtlar:
Tam soru, jQuery ile değil saf JavaScript ile nasıl yapılacağıdır.
Ama her zaman jQuery kaynak kodunda bulunan çözümü kullanın. Yerel JavaScript'in yalnızca bir satırı.
Benim için iframe içeriği almak için en iyi, kolay okunabilir ve hatta afaik .
Önce iframe'inizi alın
var iframe = document.getElementById('id_description_iframe');
// or
var iframe = document.querySelector('#id_description_iframe');
Ve sonra jQuery'nin çözümünü kullanın
var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
Nesnenin
contentWindow
özelliği sırasında bu hile yapan Internet Explorer'da bile çalışıriframe
. Diğer tarayıcıların çoğucontentDocument
özelliği kullanır ve bu özelliği ilk önce bu VEYA koşulunda kanıtlamamızın nedeni budur. Ayarlanmadıysa deneyincontentWindow.document
.
İframe'deki öğeleri seçme
Ardından , DOM Öğesini genellikle seçmek için getElementById()
veya querySelectorAll()
öğesini kullanabilirsiniz iframeDocument
:
if (!iframeDocument) {
throw "iframe couldn't be found in DOM.";
}
var iframeContent = iframeDocument.getElementById('frameBody');
// or
var iframeContent = iframeDocument.querySelectorAll('#frameBody');
İframe'deki çağrı işlevleri
Bazı global işlevleri, değişkenleri veya tüm kütüphaneleri (ör. ) Çağırmak için sadece window
öğeyi alın :iframe
jQuery
var iframeWindow = iframe.contentWindow;
// you can even call jQuery or other frameworks
// if it is loaded inside the iframe
iframeContent = iframeWindow.jQuery('#frameBody');
// or
iframeContent = iframeWindow.$('#frameBody');
// or even use any other global variable
iframeWindow.myVar = window.myVar;
// or call a global function
var myVar = iframeWindow.myFunction(param1 /*, ... */);
Not
Tüm bunlar aynı menşei politikasına uyarsanız mümkündür .
document.querySelector('#id_description_iframe').onload = function() {...
birine yardım etmesini umuyorum .
JQuery kullanarak şunu deneyin:
$("#id_description_iframe").contents().find("body").html()
benim için mükemmel çalışıyor:
document.getElementById('iframe_id').contentWindow.document.body.innerHTML;
.body
çalışmıyor. Ancak .getElementsByTagName('body')[0]
öyle.
AFAIK, bir Iframe bu şekilde kullanılamaz. Src özelliğini başka bir sayfaya yönlendirmeniz gerekir.
Uçak eski javascript kullanarak vücut içeriğini nasıl elde edeceğiniz aşağıda açıklanmıştır. Bu hem IE hem de Firefox ile çalışır.
function getFrameContents(){
var iFrame = document.getElementById('id_description_iframe');
var iFrameBody;
if ( iFrame.contentDocument )
{ // FF
iFrameBody = iFrame.contentDocument.getElementsByTagName('body')[0];
}
else if ( iFrame.contentWindow )
{ // IE
iFrameBody = iFrame.contentWindow.document.getElementsByTagName('body')[0];
}
alert(iFrameBody.innerHTML);
}
content
JS ile iframe içinde kullanın :
document.getElementById('id_iframe').contentWindow.document.write('content');
Ben etiketler arasına metin yerleştirme iframe yani işleyemez tarayıcılar için ayrılmıştır düşünüyorum ..
<iframe src ="html_intro.asp" width="100%" height="300">
<p>Your browser does not support iframes.</p>
</iframe>
İframes html kaynağını ayarlamak için 'src' özniteliğini kullanırsınız ...
Umarım yardımcı olur :)
Aşağıdaki kod tarayıcılar arası uyumludur. IE7, IE8, Fx 3, Safari ve Chrome'da çalışır, bu nedenle tarayıcılar arası sorunları ele almaya gerek yoktur. IE6'da test yapmadı.
<iframe id="iframeId" name="iframeId">...</iframe>
<script type="text/javascript">
var iframeDoc;
if (window.frames && window.frames.iframeId &&
(iframeDoc = window.frames.iframeId.document)) {
var iframeBody = iframeDoc.body;
var ifromContent = iframeBody.innerHTML;
}
</script>
window.frames.iframeId.document
benim için tanımsız. (Ubuntu 13.04, Chrome)
Chalkey doğruysa, iframe içinde bulunacak sayfayı belirtmek için src özelliğini kullanmanız gerekir. Bunu yapmanız ve iframe'deki belgenin üst belgeyle aynı etki alanında olması koşuluyla, bunu kullanabilirsiniz:
var e = document.getElementById("id_description_iframe");
if(e != null) {
alert(e.contentWindow.document.body.innerHTML);
}
Açıkçası, onları bir uyarı yapmak yerine içeriklerle yararlı bir şey yapabilirsiniz.
Javascript vücut içeriği almak için, ben aşağıdaki kodu denedim:
var frameObj = document.getElementById('id_description_iframe');
var frameContent = frameObj.contentWindow.document.body.innerHTML;
burada "id_description_iframe" iframe kimliğinizdir. Bu kod benim için iyi çalışıyor.