Yerleştirilmiş Görüntüleyici API'si, Google Kitaplar'daki kitap içeriğini JavaScript ile doğrudan web sayfalarınıza yerleştirmenize olanak tanır. API ayrıca kitap önizlemelerini değiştirmeniz için çeşitli yardımcı programlar sağlar ve genellikle bu sitede açıklanan diğer API'larla birlikte kullanılır.
Önizleme Sihirbazı, Sadece birkaç satır kod kopyalayarak sitenize önizleme özellikleri eklemeyi kolaylaştıran, Yerleşik Görüntüleyici API'sının üzerine inşa edilmiş bir araçtır. Bu doküman, görüntüleyenin sitelerinde nasıl göründüğünü özelleştirmek isteyen daha gelişmiş geliştiriciler için hazırlanmıştır.
Kitle
Bu doküman, JavaScript programlama ve nesne odaklı programlama kavramlarına aşina olan kullanıcılar için tasarlanmıştır. Ayrıca kullanıcının bakış açısından Google Kitaplar'a da aşina olmanız gerekir. Web'de JavaScript öğreticilerini bulabilirsiniz.
Bu kavramsal belgeler eksiksiz değildir ve kapsamlı değildir. Bu özellik, Yerleşik Görüntüleyici API'siyle popüler uygulamaları hızlıca keşfetmeye ve geliştirmeye başlamanız için tasarlanmıştır. İleri düzey kullanıcılar, desteklenen yöntemler ve yanıtlar hakkında kapsamlı ayrıntılar sağlayan Yerleşik Görüntüleyici API Referansı'na ilgi duyabilirler.
Yukarıda belirtildiği gibi, yeni başlayanlar sitenize temel önizlemeleri yerleştirmek için gerekli kodu otomatik olarak oluşturan Önizleme Sihirbazı ile başlamak isteyebilir.
Yerleşik Görüntüleyici API'sının "Merhaba, Dünya"
Yerleştirilmiş Görüntüleyici API'si hakkında bilgi edinmeye başlamanın en kolay yolu basit bir örnek görmektir. Aşağıdaki web sayfası, Nicholas Perry, ISBN 0738531367 (Arcadia Publishing'in "Images of America" serisinin bir parçası olan) Mountain View'ın 600x500 boyutlu önizlemesini gösterir:
<!DOCTYPE html "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title>Google Books Embedded Viewer API Example</title> <script type="text/javascript" src="https://www.google.com/books/jsapi.js"></script> <script type="text/javascript"> google.books.load(); function initialize() { var viewer = new google.books.DefaultViewer(document.getElementById('viewerCanvas')); viewer.load('ISBN:0738531367'); } google.books.setOnLoadCallback(initialize); </script> </head> <body> <div id="viewerCanvas" style="width: 600px; height: 500px"></div> </body> </html>
Bu örneğe göz atıp örneği düzenleyip bununla ilgili oynayabilirsiniz. Bu basit örnekte bile dikkat edilmesi gereken beş nokta vardır:
- API etiketi,
script
etiketi kullanılarak eklenir. - İzleyiciyi tutmak için "viewerCanvas" adlı bir
div
öğesi oluştururuz. - "İzleyici" nesnesi oluşturmak için bir JavaScript işlevi yazıyoruz.
- Kitabı, benzersiz tanımlayıcısını (bu örnekte
ISBN:0738531367
) kullanarak yüklüyoruz. - API tam olarak yüklendiğinde
initialize
işlevini çağırmak içingoogle.books.setOnLoadCallback
kullanılır.
Bu adımlar aşağıda açıklanmıştır.
Yerleşik Görüntüleyici API'sını Yükleme
Yerleşik Görüntüleyici API'sını yüklemek için API Yükleyici çerçevesini kullanmak nispeten basittir. Bu işlem aşağıdaki iki adımı içerir:
- API Yükleyici kitaplığını ekleyin:
<script type="text/javascript" src="https://www.google.com/books/jsapi.js"></script>
google.books.load
yöntemini çağırın.google.books.load
yöntemi, aşağıda açıklandığı gibi bir geri çağırma işlevi veya dili belirten isteğe bağlı bir liste parametresi alır.<script type="text/javascript"> google.books.load(); </script>
Yerleşik Görüntüleyici API'sinin yerelleştirilmiş sürümünü yükleme
Yerleştirilmiş Görüntüleyici API'si; ipuçları, kontrol adları ve bağlantı metni gibi metin bilgileri gösterirken varsayılan olarak İngilizceyi kullanır. Belirli bir dildeki bilgileri düzgün şekilde görüntülemek için Yerleşik Görüntüleyici API'sını değiştirmek isterseniz google.books.load
çağrınıza isteğe bağlı bir language
parametresi ekleyebilirsiniz.
Örneğin, Brezilya Portekizcesi arayüz diliyle bir kitap önizleme modülü görüntülemek için:
<script type="text/javascript"> google.books.load({"language": "pt-BR"}); </script>
Örneği görüntüleyin (book-language.html)
Şu anda desteklenen RFC 3066 dil kodları arasında af, ar, hy, bg, ca, zh-CN, zh-TW, hr, cs, da, nl, en, fil, fi, fr, de, el, he, hu, is, id, id, ja, ko, vv, lt, r, pt, tr, tr, tr, tr
Yerleşik Görüntüleyici API'sını İngilizce dışında bir dilde kullanırken sayfanızı content-type
başlığı utf-8
olarak veya sayfanıza eşdeğer bir <meta>
etiketi eklemenizi öneririz. Bu sayede karakterlerin tüm tarayıcılarda doğru şekilde oluşturulması sağlanır. Daha fazla bilgi için HTTP karakter kümesi parametresini ayarlama ile ilgili W3C sayfasına bakın.
İzleyici DOM öğeleri
<div id="viewerCanvas" style="width: 600px; height: 500px"></div>
Bir kitabın web sayfasında gösterilebilmesi için yer ayırtılması gerekir. Genellikle bu işlem, adlandırılmış bir div
öğesi oluşturularak ve tarayıcının belge nesne modelinde (DOM) bu öğeye bir referans yapılarak yapılır.
Yukarıdaki örnekte, "viewerCanvas" adlı bir div
tanımlanmaktadır ve stil özellikleri kullanılarak boyutu ayarlanmaktadır. İzleyici, dolaylı olarak boyutunu belirlemek için kapsayıcının boyutunu kullanır.
DefaultViewer nesnesi
var viewer = new google.books.DefaultViewer(document.getElementById('viewerCanvas'));
Sayfada tek bir görüntüleyen oluşturan ve kontrol eden JavaScript sınıfı DefaultViewer
sınıfıdır. (Bu sınıfın birden fazla örneği oluşturabilirsiniz. Her nesne, sayfada ayrı bir görüntüleyen tanımlar.) JavaScript new
operatörü kullanılarak bu sınıfın yeni bir örneği oluşturulur.
Yeni bir görüntüleyen örneği oluşturduğunuzda, izleyici için kapsayıcı olarak sayfada bir DOM düğümü (genellikle div
öğesi) belirtirsiniz. HTML düğümleri, JavaScript document
nesnesinin alt öğeleridir. Bu yönteme document.getElementById()
yöntemi aracılığıyla referans verilir.
Bu kod, viewer
adlı bir değişken tanımlar ve bu değişkeni yeni bir DefaultViewer
nesnesine atar. DefaultViewer()
işlevi, oluşturucu olarak bilinir ve tanımı (Yerleşik Görüntüleyici API Referansı'ndan netlik kazanacak şekilde kısaltılır) aşağıda gösterilmiştir:
Marka | Açıklama |
---|---|
DefaultViewer(container, etkinleştirir mi?) | Belirtilen HTML'nin container içinde yeni bir görüntüleyen oluşturur. Bu görüntüleyici, sayfada engelleme düzeyinde bir öğe olmalıdır (genellikle
DIV ). İsteğe bağlı opts parametresi kullanılarak gelişmiş seçenekler iletilir. |
Oluşturucudaki ikinci parametrenin isteğe bağlı olduğunu (bu belgenin kapsamı dışında gelişmiş uygulamalar için amaçlandığını) ve "Hello, World" örneğinden çıkarıldığını unutmayın.
İzleyiciyi belirli bir kitapla başlatma
viewer.load('ISBN:0738531367');
DefaultViewer
oluşturucu ile bir izleyici oluşturduktan sonra izleyicinin belirli bir kitapla ilk kullanıma hazırlanması gerekir. Bu başlatma, izleyicinin load()
yönteminin kullanılmasıyla gerçekleştirilir. load()
yöntemi, API'ye hangi kitabın gösterileceğini belirten identifier
değerini gerektirir. Bu yöntem, izleyici nesnesi üzerinde başka herhangi bir işlem gerçekleştirilmeden önce gönderilmelidir.
Bir kitabın birden fazla tanımlayıcısını (ince kapak basımının ISBN'si veya alternatif OCLC numaraları) biliyorsanız load()
işlevine ilk parametre olarak bir dizi tanımlayıcı dizesi iletebilirsiniz. Dizideki herhangi bir tanımlayıcı ile ilişkili yerleştirilebilir bir önizleme varsa görüntüleyici kitabı oluşturur.
Desteklenen kitap tanımlayıcıları
Dinamik Bağlantılar özelliği gibi, Yerleşik Görüntüleyici API'si de belirli bir kitabı tanımlamak için çeşitli değerleri destekler. Bunlardan bazıları:
- ISBN
- 10 veya 13 haneli benzersiz ticari Uluslararası Standart Kitap Numarası.
Örnek:ISBN:0738531367
- OCLC numarası
- Kitabın kaydı WorldCat katalog sistemine eklendiğinde OCLC tarafından bir kitaba atanan benzersiz numara.
Örnek:OCLC:70850767
- LCCN
- Kongre Kütüphanesi tarafından kayda atanan Kongre Kütüphanesi Kontrol Numarası.
Örnek:LCCN:2006921508
- Google Kitaplar cilt kimliği
- Google Kitaplar'ın cildine atadığı benzersiz dize. Bu değer, Google Kitaplar'da kitabın URL'sinde görünür.
Örnek:Py8u3Obs4f4C
- Google Kitaplar önizleme URL'si
- Google Kitaplar'da bir kitap önizleme sayfası açan URL.
Örnek:https://books.google.com/books?id=Py8u3Obs4f4C&printsec=frontcover
Bu tanımlayıcılar genellikle Google Books API Ailesi'ndeki diğer API'lerle kullanılır. Örneğin, yalnızca kitabın yerleştirilebilir olduğu durumlarda önizleme düğmesi oluşturmak için Dinamik Bağlantılar'ı kullanabilirsiniz. Ardından kullanıcı bu düğmeyi tıkladığında Dinamik Bağlantılar çağrısı tarafından döndürülen önizleme URL'sini kullanarak izleyici örneğini oluşturursunuz. Benzer şekilde, Books API ile zengin bir göz atma ve önizleme uygulaması oluşturabilirsiniz. Bu uygulama, Ciltler feed'lerinde çeşitli uygun sektör tanımlayıcılarını döndürür. Bazı gelişmiş uygulamalara göz atmak için örnekler sayfasını ziyaret edin.
Başarısız başlatma işlemlerini işleme
Bazı durumlarda load
çağrısı başarısız olabilir. Bu durum genellikle API, sağlanan tanımlayıcıyla ilişkili bir kitap bulamadığında, kitabın kullanılabilir bir önizlemesi yoksa, kitap önizlemesinin yerleştirilemediği durumlarda veya bölgesel kısıtlamalar son kullanıcının bu kitabı görmesini engellerse meydana gelir. Bu tür bir hatayla ilgili uyarı almak isteyebilirsiniz. Böylece kodunuz bu koşulu sorunsuz bir şekilde işleyebilir. Bu nedenle load
işlevi, isteğe bağlı ikinci bir parametre iletmenizi sağlar. Bu parametre, notFoundCallback
yüklenemediğinde hangi işlevin çağrılacağını gösterir. Örneğin, kitap yerleştirilebiliyorsa aşağıdaki kod bir JavaScript "uyarı" kutusu oluşturur:
function alertNotFound() { alert("could not embed the book!"); } function initialize() { var viewer = new google.books.DefaultViewer(document.getElementById('viewerCanvas')); viewer.load('ISBN:1234', alertNotFound); }
Örneği görüntüleyin (book-notfound.html)
Bu geri çağırmayı kullanarak benzer bir hata göstermeye karar verebilir veya viewerCanvas
öğesini tamamen gizleyebilirsiniz. Hatalı geri çağırma parametresi isteğe bağlıdır ve "Hello World" örneğine dahil değildir.
Not: Önizleme tüm kitaplarda ve tüm kullanıcılar için sunulmayabilir. Bu nedenle, siz bir önizleme yüklemeyi denemeden önce önizlemenin kullanılabilir olup olmadığını bilmeniz yararlı olabilir. Örneğin, kullanıcı arayüzünde "Google Önizleme" düğmesini, sayfasını veya bölümünü, yalnızca önizlemenin kullanıcıya sunulacağı durumlarda göstermek isteyebilirsiniz. Bunu Books API veya Dinamik Bağlantılar'ı kullanarak yapabilirsiniz. Bunların ikisi de bir kitabın görüntüleyici kullanılarak yerleştirilmeye uygun olup olmadığını bildirir.
Başarılı ilk kullanıma hazırlama işlemlerini işleme
Bir kitabın başarıyla yüklenip yüklenmediğini ve ne zaman yüklendiğini bilmek de yararlı olabilir. Bu nedenle load
işlevi, bir kitabın yüklenmesi tamamlandığında ve yürütülmesi durumunda yürütülecek isteğe bağlı üçüncü bir parametreyi (successCallback
) destekler.
function alertInitialized() { alert("book successfully loaded and initialized!"); } function initialize() { var viewer = new google.books.DefaultViewer(document.getElementById('viewerCanvas')); viewer.load('ISBN:0738531367', null, alertInitialized); }
Örneği görüntüleyin (book-success.html)
Bu geri çağırma, örneğin sayfanızda yalnızca izleyici tamamen oluşturulmuşsa belirli öğeleri göstermek istiyorsanız faydalı olabilir.
İzleyiciyi yüklemede gösterme
google.books.setOnLoadCallback(initialize);
Bir HTML sayfası oluşturulurken belge nesne modeli (DOM) oluşturulur. Harici resimler ve komut dosyaları alınıp document
nesnesine dahil edilir. İzleyicimizin sayfaya yalnızca sayfa tamamen yüklendikten sonra yerleştirilmesini sağlamak için google.books.setOnLoadCallback
işlevi, DefaultViewer
nesnesini oluşturan işlevin yürütülmesini ertelemek için kullanılır. setOnLoadCallback
, initialize
öğesini yalnızca Yerleşik Görüntüleyici API'si yüklenip kullanıma hazır olduğunda çağıracağı için, öngörülemeyen davranışlar önlenir ve görüntüleyen kişinin nasıl ve ne zaman çekileceğini kontrol eder.
Not: Tarayıcılar arası uyumluluğu en üst düzeye çıkarmak için, <body>
etiketinizde onLoad
etkinliği kullanmak yerine google.books.setOnLoadCallback
işlevini kullanarak görüntüleyen yükünü planlamanızı önemle tavsiye ederiz.
İzleyici etkileşimleri
Artık bir DefaultViewer
nesnesine sahip olduğunuza göre bu nesneyle etkileşim kurabilirsiniz. Temel izleyici nesnesi, Google Kitaplar web sitesinde etkileşimde bulunduğunuz
görüntüye çok benzer ve davranır. Ayrıca birçok yerleşik davranış sunar.
Bununla birlikte, izleyiciyle programatik olarak da etkileşim kurabilirsiniz. DefaultViewer
nesnesi, önizleme durumunu doğrudan değiştiren çeşitli yöntemleri destekler. Örneğin zoomIn()
, nextPage()
ve highlight()
yöntemleri, kullanıcı etkileşimi yerine izleyici üzerinde programatik olarak çalışır.
Aşağıdaki örnekte her 3 saniyede bir otomatik olarak sonraki sayfaya "dönen" bir kitap önizlemesi gösterilmektedir. Sonraki sayfa, görüntüleyen kullanıcının görebileceği bölümde yer alıyorsa, görüntüleyen sorunsuz bir şekilde sayfaya kaydırır; aksi takdirde görüntüleyen doğrudan sonraki sayfanın en üstüne atlar.
function nextStep(viewer) { window.setTimeout(function() { viewer.nextPage(); nextStep(viewer); }, 3000); } function initialize() { var viewer = new google.books.DefaultViewer(document.getElementById('viewerCanvas')); viewer.load('ISBN:0738531367'); nextStep(viewer); } google.books.setOnLoadCallback(initialize);
Örneği görüntüleyin (book-animate.html)
İzleyici belirli bir kitapla tamamen başlatılana kadar izleyiciye yapılan programatik aramaların başarısız olacağını veya herhangi bir etkisi olmayacağını unutmayın. Bu tür işlevleri yalnızca görüntüleyen hazır olduğunda çağırdığınızdan emin olmak için yukarıda açıklandığı gibi viewer.load
parametresini successCallback
parametresini kullanın.
DefaultViewer
nesnesinin desteklediği tüm işlevler hakkında bilgi edinmek için Referans Kılavuzu'na bakın.
Programlama notları
Yerleşik Görüntüleyici API'sını incelemeye başlamadan önce uygulamanızın hedeflediği platformlarda sorunsuz çalıştığından emin olmak için aşağıdaki kaygıları dikkate almanız gerekir.
Tarayıcı uyumluluğu
Yerleşik Görüntüleyici API'si Internet Explorer, Firefox ve Safari'nin son sürümlerini ve genellikle Camino ve Google Chrome gibi diğer Gecko ve WebKit tabanlı tarayıcıları destekler.
Bazen farklı uygulamalar, tarayıcıları uyumsuz olan kullanıcılar için farklı davranışlar gerektirir. Yerleşik Görüntüleyici API'si, uyumsuz bir tarayıcı algıladığında otomatik davranışa sahip olmaz. Bu dokümandaki örneklerin çoğu, Tarayıcı uyumluluğunu kontrol etmez ve eski tarayıcılar için bir hata mesajı göstermez. Gerçek uygulamalar, eski veya uyumsuz tarayıcılarla daha uyumlu işlemler yapabilir ancak örneklerin daha okunaklı olması için bu tür kontroller atlanır.
Zor olmayan uygulamalar, tarayıcılar ve platformlar arasında kaçınılmaz olarak tutarsızlıklarla karşılaşacaktır. quirksmode.org gibi siteler de geçici çözüm bulmak için iyi kaynaklardır.
XHTML ve Quirks modu
Görüntüleyenin yer aldığı sayfalarda standartlara uygun XHTML'yi kullanmanızı öneririz. Tarayıcılar, sayfanın üst kısmında XHTML DOCTYPE
bölümünü gördüğünde sayfayı "standartlara uygunluk modunda" oluşturur. Bu da, düzeni ve davranışları tarayıcılar genelinde çok daha tahmin edilebilir hale getirir. Bu tanımı taşımayan sayfalar, "tutarsız modda" oluşturulabilir. Bu da düzenin tutarsız olmasına yol açabilir.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
Yerleşik İzleyici API'si örnekleriyle ilgili not
Bu belgedeki örneklerin çoğunun yalnızca alakalı JavaScript kodunu gösterdiğini, tam HTML dosyasını göstermediğini unutmayın. JavaScript kodunu kendi iskelet HTML dosyanıza bağlayabilir veya örnekten sonraki bağlantıyı tıklayarak her örnek için HTML dosyasının tamamını indirebilirsiniz.
Sorun giderme
Kodunuz çalışmıyor gibi görünüyorsa sorunlarınızı çözmenize yardımcı olabilecek bazı yaklaşımları aşağıda bulabilirsiniz:
- Yazım hataları olup olmadığına bakın. JavaScript'in büyük/küçük harfe duyarlı bir dil olduğunu unutmayın.
- JavaScript hata ayıklayıcısı kullanın. Firefox'ta JavaScript konsolunu, Venkman Hata Ayıklayıcı'yı veya Firebug eklentisini kullanabilirsiniz. IE'de Microsoft Script Hata Ayıklayıcı'yı kullanabilirsiniz. Google Chrome tarayıcısı, bir DOM denetleyicisi ve bir JavaScript hata ayıklayıcısı dahil olmak üzere birçok geliştirme aracını içerir.