2013-08-12 18 views
8

Belirli bir sayfaya işaret eden bir iframe nesnesine sahibim. Örneğin,iframe nesnesindeki src/konum değişikliğini algılama

<iframe src="http://en.wikipedia.org/wiki/Special:Random"></iframe> 

ben iframe değişikliklerin yeri kullanıcı içindeki bir bağlantı tıklandığında, çünkü ilgili uyarıyı yapmak istiyorum.

onLoad="alert(this.ContentWindow.location.href);" yapmak hiçbir şey vermez.

onLoad="alert(this.src);" yapmak, kullanıcının ne tıkladığı önemli olmaksızın ilk src (../wiki/Special:Random) değerini verir.

Kullanıcı aynı etki alanı içinde kalacak ve bu nedenle aynı Kaynak İlkesi ilkesi ihlal edilmeyecektir.

+0

Muhtemelen bir yazım hatası, ancak 'iframe' etiketiniz düzgün şekilde oluşturulamıyor. –

+1

iframe src 'http: //en.wikipedia.org/wiki/Special: Random' diyor, ancak kullanıcı aynı alanda kalacak. Bunun bir SOP sorunu olmadığından emin misiniz? –

+0

Oops, üzgünüm. carriwitchet

cevap

3

"ContentWindow" içinde doğru durumu kullan, "contentWindow" olması gerekiyordu.

<iframe src="your initial URL" onload="alert(this.contentWindow.location.href)" /> 

çalışır.

+4

sizin için uygun olmayan bir web sitesinin 'contentWindow.location' dosyasına erişemezsiniz. ana pencerenin aynı etki alanı veya protokolü. özellikle google chrome'da. –

+0

@HashemQolami, OP'den alıntı yapıyor: * Kullanıcı aynı etki alanı içinde kalacak, yani Aynı Kaynak politikası ihlal edilmeyecektir. * –

+0

"src" özelliği "http: // en.wikipedia.org" ifadesine işaret ettiği için, iframe Çalışmak için en.wikipedia.org olmalıdır. BTW, Eğer kullanıcı aynı alanda kalırsa, bu işe yarayacaktır. –