Ceviz Forum

Geri Dön   Ceviz Forum > Programlama > Javascript / DHTML / Ajax

Cevapla
 
LinkBack Seçenekler
Eski 24/05/2007, 12:11   #1 (permalink)
Üye
 
DenizOzlem Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 01/2005
Mesaj: 12
Varsayılan Iframe Yönlendirme Konusunda

Merhaba,

Yanlış anahtar kelimelerle mi aratıyorum ya da böyle birşey imkansız mı bilemiyorum ama 1 haftadır tıklamadığım link, okumadığım forum kalmadı ve bu sorunun yanıtını hiçbiryerde bulamadım. Umarım başlığı doğru yere açmışımdır...

Durum:

tamamen html den oluşan bir site var elimde. Linkler, tasarım, butonlar vs. hepsi default.html adlı sayfamda ve bu sayfada ID=icerik olan bir iframe bulunuyor. tüm butonlar linkler özetle tüm alt sayfalarım bu alanda (iframein içinde) açılıyor. site desktopta çalışıyormuşcasına hızlı ve sanki flashla yapılmış gibi derli toplu ve şık oldu...

Sorunum:

diyelim ki ürünler sayfasının linkini birine gönderdiniz ya da google da listelenen linki tıkladınız. olması gerektiği gibi urunler.htm açılıyor ancak tek başına bu sayfa açıldığında "ee neresi burası şimdi" diyorsunuz haliyle... ne logo, ne buton ne link.. boş bi sayfada 1 adet tablo ve içeriği...

bu iç sayfalara özellikle link, buton, logo vb. şeyler koymuyorum çünki default.html içinde (iframe içinde) açıldığında çok çirkin ve anlamsız oluyor

Yardım istediğim nokta:

bu alt sayfala es kaza direk linkten gidildiğinde (örn: arama motoru, yada direk url yoluyla) sayfayı default.html e yönlendirmek mümkün müdür? varsın default sayfasında ürünler değil de ana sayfa yüklü haline gitsin önemli değil ama bir şekilde default sayfasına ulaşsın istiyorum...

Başarısız deneme:

Alt sayfaya direk yönlendirme verirsem bu sefer default.html de o sayfayı çağırınca iframe içinde default.html i açıyor


Yardımlarınız için şimdiden teşekkür ederim.

Saygılarımla,
Deniz Özlem Danışman
DenizOzlem hatta değil   Alıntı Yaparak Yanıtla
Eski 24/05/2007, 12:24   #2 (permalink)
neo
Kurtarıcı değil, Deterjan
 
Üyelik Tarihi: 01/2003
Mesaj: 94
Varsayılan

Referer bilgisine bakılarak bir çözüm geliştirilebilir.
urun.html içinde
Kod:
window.onload = function()
{
  var ref = document.referer;
  var siteUrl = "http://www.felan.com";
  if (ref.substring(0, siteUrl.length) != siteUrl)
      window.location.href= 'default.html?include=urun.htm';
}
default.html içinde ayrı bir javascript'de gelen parametreye göre include işlemini otomatik yapabilir.
Kod:
// Daha önce yazmış olduğum QueryString'den
// parametre alma fonksiyonu
//
// Sende kullanabilirsin.
function getRequestParameter(param)
{
	param += "=";
	str	  = window.location.search;
	ind1  = str.indexOf(param);

	if ((ind2 = str.indexOf('&', ind1)) >= 0)			
		return str.substring(ind1 + param.length, ind2-ind1 + 1);
	else
		return str.substring(ind1 + param.length);

}
window.onload = function()
{
   var pageUrl = getRequestParameter('include');
   if (pageUrl.length > 0 )
     document.getElementById('IFrameId').src = pageUrl;
}
NOT: Kodları denemedim, umarım mantık olarak demek istediğimi anlatabilmişimdir.
neo hatta değil   Alıntı Yaparak Yanıtla
Eski 24/05/2007, 12:53   #3 (permalink)
Üye
 
DenizOzlem Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 01/2005
Mesaj: 12
Varsayılan

ilginize çok teşekkür ederim.. hemen denedim kodu ama sanırım birşeyleri yanlış yapıyorum. sayfa eskisi gibi açılıyor ve hatalı açılıyor. hata detayında şöyle yazıyor:

Satır:13
Karakter:3
Hata: 'undefiend', null veya bir nesne değil

Bunun ne anlama geldiğini gerçekten anlamadım :/
DenizOzlem hatta değil   Alıntı Yaparak Yanıtla
Eski 24/05/2007, 12:56   #4 (permalink)
neo
Kurtarıcı değil, Deterjan
 
Üyelik Tarihi: 01/2003
Mesaj: 94
Varsayılan

Yukarıdaki kodda bazı şeyler örnek olarak yazılmıştır. Mesela IFrameId adında bir IFrame nesnesi default.html içinde var olarak kabul edilmiştir. Dolayısıyla sizin sayfanızda çalışmayabilir.

Sizden beklenen buradaki kodun mantığını anlayıp kendinize uyarlamanızdır. Fakat eğer bunu halledemezseniz tam kodunuzu veya kodun ilgili yerlerini buraya yazınız (default.htm ve urun.html gibi), belki birileri uğraşmak isteyip isteğinizi yerine getirebilir.

Fakat buna güvenmezseniz daha iyi edersiniz
neo hatta değil   Alıntı Yaparak Yanıtla
Eski 24/05/2007, 13:00   #5 (permalink)
Üye
 
DenizOzlem Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 01/2005
Mesaj: 12
Varsayılan


IFrameId yerine icerik yazdım çünki benim sayfamdaki framein id si 'icerik' kesin biryerde hata yapıyorum
DenizOzlem hatta değil   Alıntı Yaparak Yanıtla
Eski 24/05/2007, 13:03   #6 (permalink)
neo
Kurtarıcı değil, Deterjan
 
Üyelik Tarihi: 01/2003
Mesaj: 94
Varsayılan

Benim getRequestParameter fonksiyonu da biraz hatalı göründü şu an gözüme. Onun galiba daha güncel bir versiyonunu yazmıştım sanırım :-)

Firefox + FireBug kurup, hatanın tam olarak nerde olduğunu bize söyleyebilirseniz daha iyi olur.
neo hatta değil   Alıntı Yaparak Yanıtla
Eski 24/05/2007, 13:10   #7 (permalink)
Üye
 
DenizOzlem Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 01/2005
Mesaj: 12
Varsayılan

ok akşam evde kendi pc me kurup gelişmeleri paylaşmaya çalışırım
DenizOzlem hatta değil   Alıntı Yaparak Yanıtla
Eski 24/05/2007, 13:28   #8 (permalink)
Üye
 
Sniper Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 06/2004
Yer: İstanbul
Mesaj: 2,269
Varsayılan

Ben farklı bir çözüm geliştirdim. IE, Opera ve FF'da sorunsuz çalışıyor. 3 farklı sayfa hazırladım ve içerikleri şöyle:

Anasayfa: default.html
Kod:
<script>
var URL = location.href;

function queryString(Deger) {
  if(Deger!=null) {
    var regEx = new RegExp("(\\?|&)("+Deger+"=)(.*?)(&|$|#)","i");
    var exec = regEx.exec(URL);
    var Sonuc = RegExp.$3;
  } else {
    var regEx = new RegExp("(\\?)(.*?)($)","i");
    var exec = regEx.exec(URL);
    var Sonuc = RegExp.$2;
  }

  return(Sonuc);
}

function sayfa() {
	if(queryString('sayfa')!="") {
		return(queryString('sayfa'));
	} else {
		return("default2.html");
	}
}


</script>
<body onload="document.getElementById('Sniper').src = sayfa();">
<iframe id="Sniper"></iframe>
Varsayılan iframe sayfası: default2.html
Kod:
Bu çokta önemli değil, herhangi birşey yazılabilir. (Aynen kullanırsan bunu okursun)
Iframe'de açılacak sayfa = iframe.html
Kod:
<script>
function sayfaAdi(neresi) {
	var sayfa = neresi != "" ? location.href : neresi;
	var son = sayfa.lastIndexOf("?")!=-1 ? sayfa.lastIndexOf("?") : sayfa.length;
	
	return(sayfa.substring(sayfa.lastIndexOf("/")+1,son));
}

function kontrol() {
	if(window.frameElement==null) {
		location.href='default.html?sayfa='+sayfaAdi()
	}
	return;
}
document.write(sayfaAdi(window.frameElement));
</script>
<body onload="kontrol()">
</body>

Şimdi açıklamalara ve gerekliliklere geçelim:

Ana sayfaya daha önceden yazdığım queryString'den gelen veriyi okuyan scripti koydum ve IFRAME'e bir ID atadım. İkinci olarak ta, queryString'deki "sayfa" değişkenini okuyan bir fonksiyon ekledim ve body'nin onload olayında bu fonksiyonu kontrol ederek ID'si belli IFRAME'in yönünü belirledim. Eğer queryString'de okuduğum değer boşsa (yani anasayfa direkt açılıyorsa) bu fonksiyon varsayılan iframe sayfasına (default2.html) yönlenecektir.

Iframe sayfası olarak belirlediğim sayfaya ise sayfanın adını okuyan ve sayfanın direkt açılıp açılmadığını kontrol eden birer fonksiyon ekledim ve kontrol fonksiyonunu iframe sayfasının body elemanının onload olayına ekledim. Eğer sayfa direkt açılıyorsa bu kontrol fonksiyonu devreye girerek sayfanın adını okur ve default.html sayfasına "sayfa" değişkeni aracılığıyla bu sayfanın adını gönderir (default.html?sayfa=iframe.html). Bu sayede hem sayfa ana sayfaya döner hem de ana sayfadaki ilgili iframe'de nu sayfanın içeriği görünür.

Kısaca özetleyecek olursak, direkt açılmasını istemediğin tüm sayfalara iframe.html'deki fonksiyonları ekleyip body - onload olayına "kontrol()" yazman gerek. Ana sayfaya ise queryString fonksiyonunu ve bunun aracılığıyla sayfa ismini okuyan "sayfa()" fonksiyonunu eklemeli ve body - onload olayına "document.getElementById('iFrameAdi').src = sayfa();" kodunu eklemelisin.

Bunlara dikkat ettikten sonra istediğinin olmaması için hiçbir neden kalmıyor(dur umarım). Ben kullandığım örnek dosyaları cevaba ekledim. Önce iframe.html dosyasını direkt açmaya çalış, sonra da default.html. Aradaki farkı göreceksin. Çok kafan karışırsa kodları incele...
Eklenmiş Dosyalar
File Type: rar Sniper.rar (770 Bayt, 9 views)
__________________
tuncay.kinali.net
Sniper hatta değil   Alıntı Yaparak Yanıtla
Eski 24/05/2007, 14:48   #9 (permalink)
Üye
 
DenizOzlem Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 01/2005
Mesaj: 12
Varsayılan

Çok teşekkür ederim, hemen uyguladım süper oldu ^^

yanlız birşey sorucam hala sayfada hata var yazıyor detayında ise nesne bekleniyor gibi bir açıklama mevcut. bu önemli birşey mi? sonuçta yapması gerekeni yapıyor artık?
DenizOzlem hatta değil   Alıntı Yaparak Yanıtla
Eski 24/05/2007, 14:54   #10 (permalink)
Üye
 
Sniper Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 06/2004
Yer: İstanbul
Mesaj: 2,269
Varsayılan

Ekte gönderdiğim dosyalarda herhangi bir sorun yok. Sayfa içinde başka scriptler varsa sorunun kaynağı onlar olabilir. Tam olarak hatayı bilmediğim için net konuşmam zor...
__________________
tuncay.kinali.net
Sniper hatta değil   Alıntı Yaparak Yanıtla
Cevapla

Bookmarks

Seçenekler

Mesaj Yazma Hakları
Yeni mesajgöndermezsiniz
Cevap yazamazsınız
Dosya ekleyemezsiniz
Mesajınızı düzenleyemezsiniz

BB code is Açık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu açana göre Forum Cevap En Son Mesaj
SQL konusunda yardim sercankop Veritabanları & SQL 0 09/04/2007 09:08
Kur konusunda help pls... HolyKa PHP 2 09/11/2005 14:53
ASP YTL Konusunda cemunur ASP 8 30/12/2004 15:54
ADSL konusunda Mkemal Ağ / Güvenlik 3 02/10/2004 17:58
web konusunda yardım hb_barak Web Tasarım 3 21/09/2004 20:36


Forum saati Türkiye saatine göredir. GMT +3. Şu anda saat 23:36.

Reklamlar & Desteklenenler
Hassas Valf | Hassas Kaplama | Antalyamız | Gazete | Ticari Bilişim | Hakan Müştak | Rüya Tabirleri | Kadın | Hastalıklar | Cepte msn ve e-posta | Webmaster | Antalya Aupair | Turkish Property Antalya | Forum | Chat | Perde | Adsl | Araba | bolindir.com | guncelle.com | livescore | Web Tasarım | evden eve nakliyat | forum | evden eve | sohbet | Resimcim| Kalifiye İnsan Kaynakları | Web Tasarım | Oyun | Yusuf KOÇ | Akın Yorulmaz | şiir | UFO | Web Tasarım | Oyunlar | Canlı Tv |


Forum Yazılımı: vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright ©2001 - 2008, Ceviz.net