2011-05-10 18 views
10

Çalıştığım etiketler üzerinde çalışan bir proje üzerinde çalışıyorum. Ben çocuk çerçeve üzerinde javascript fonksiyonu belirtmek nasıl İşteBir çocukta belirtilen javascript işlevi nasıl çağrılır? <frame>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html lang="en"> 
<head> 
</head> 
<frameset rows="75px,*" frameborder="0"> 
    <frame name="frame1" src="frames/frame1.html"> 
    <frameset class="child_frameset"> 
     <frame name="frame3" src="frames/frame3.html"> 
    </frameset> 
</frameset> 
</html> 

(frame3.html):

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <script type="text/javascript"> 
     function helloWorld(){ 
      alert('hello world!'); 
     } 
    </script> 
</head> 
<body> 
    <h1>I'm frame 3</h1> 
</body> 
</html> 

İşte ana sayfasında (index.html) ortak HTML yapısı var Görevim helloWorld() işlevini çağırmaktır. Bunu nasıl yaparım?
Şimdiden teşekkürler! contentWindow, contentDocument için

document.getElementById('frame3').contentWindow.helloWorld(); 
+0

'un, üstteki işlevi çağırmaya çalıştığını umuyoruz? – Ibu

+0

evet! Ana sayfasından (index.html) ** helloWorld() ** işlevini çağırmaya çalışıyorum. – LoomyBear

cevap

20

Böyle yapabilirsiniz.

var siblingFrame; 
if (parent.document.getElementById('siblingFrameId').contentWindow){ 
    siblingFrame = parent.document.getElementById('siblingFrameId').contentWindow; 
} else if (parent.document.getElementById('siblingFrameId').contentDocument){ 
    siblingFrame = parent.document.getElementById('siblingFrameId').contentDocument; 
} else if (parent.document.getElementById('siblingFrameId')) { 
    siblingFrame = parent.document.getElementById('siblingFrameId'); 
} 

siblingFrame.helloWorld(); 
+0

+ 1 Çerçeveyi ilk olarak tanıtmak iyi bir fikir olabilir. – lonesomeday

+2

Örnekteki çerçevelerin bir kimliği yok, bu nedenle 'getElementById' gerçekten uygun değil. Sadece bir isim ile 'window.frames [" frame3 "] kullanın.Onun yerine helloWorld()'. – RoToRa

+0

En hızlı cevap için Thanx ... Tüm bunları denedim ama firebug konsolu bana geri döndü ** window.frames.frame3 undefined ** ve ** document.getElementById ("frame3") boş ** (lütfen not verdim çerçeve bir id = "frame3") ... herhangi bir düşünce neden? – LoomyBear

1

kontrol ve çerçeve nesnesini almak ve çağrıyı gerçekleştirin:

1

Sen childframe gelen yöntemini çağırabilirsiniz

n, m belgeyi tek kare kare [m] bölümünü kaldırmak ve işi var 0.If başlayarak tam sayılardır
window.frames[n].frames[m].methodName() 

.

Bir şey daha yapın, bir hatayı deneyin ve çerçeve numaralarını tam olarak öğrenin ve yöntem. Bu yardımcı,

İlgili konular