Ini terlihat aneh tetapi saya tidak dapat menemukan solusinya.
Mengapa biola ini http://jsfiddle.net/carlesso/PKkFf/ menampilkan konten halaman dan, kemudian ketika google.load muncul, halaman menjadi kosong?
Ini berfungsi dengan baik jika google.load segera dilakukan, tetapi menunda tidak berfungsi sama sekali.
Di sini sumber halaman untuk Anda yang lebih malas (atau lebih pintar):
<!DOCTYPE html>
<html lang="en">
<head>
<title>Ciao</title>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
</head>
<body>
<h1>Test</h1>
<div id="quicivanno">
<p>ciao</p>
</div>
</body>
<script type="text/javascript">
setTimeout(function() {google.load('visualization', '1.0', {'packages':['corechart']});}, 2000);
</script>
</html>
javascript
google-visualization
google-loader
Enrico Carlesso
sumber
sumber
Jawaban:
Sepertinya google.load menambahkan skrip ke halaman menggunakan document.write (), yang jika digunakan setelah halaman dimuat, html akan dihapus.
Ini menjelaskan lebih mendalam: http://groups.google.com/group/google-ajax-search-api/browse_thread/thread/e07c2606498094e6
Menggunakan salah satu ide, Anda bisa menggunakan callback untuk memuat untuk memaksanya menggunakan append daripada doc.write:
Ini menunjukkan waktu tunggu 2 detik dengan jendela peringatan tertunda
sumber
Anda hanya perlu menentukan callback, dan itu tidak akan menghapus halaman (mungkin versi lama google.load () melakukannya, tetapi tampaknya yang baru tidak jika digunakan dengan callback). Berikut adalah contoh yang disederhanakan saat saya memuat lib "google.charts":
Saat melakukannya whitout callback (), saya masih mendapatkan halaman kosong juga - tetapi dengan callback, itu sudah diperbaiki untuk saya.
sumber
Catatan: Berikut ini bagus untuk menghindari penundaan waktu - ini tepat waktu. Contoh ini dapat digunakan secara umum oleh semua skrip (membutuhkannya), tetapi secara khusus digunakan dengan Greasemonkey. Ini juga menggunakan API bagan Google sebagai contoh, tetapi solusi ini melampaui API Google lainnya dan dapat digunakan di mana pun Anda perlu menunggu skrip dimuat.
Menggunakan google.load dengan callback tidak menyelesaikan masalah saat menggunakan Greasemonkey untuk menambahkan bagan Google. Dalam proses (Greasemonkey dimasukkan ke halaman), node skrip www.google.com/jsapi ditambahkan. Setelah menambahkan elemen ini untuk javascript jsapi Google, skrip yang dimasukkan (atau halaman) siap menggunakan perintah google.load (yang perlu dimuat di simpul yang ditambahkan), tetapi skrip jsapi ini belum dimuat. Menyetel batas waktu berhasil, tetapi batas waktu hanyalah solusi untuk balapan waktu pemuatan skrip Google jsapi dengan skrip / halaman yang dimasukkan. Bergerak di sekitar tempat skrip mengeksekusi google.load (dan mungkin google.setOnLoadCallback) dapat memengaruhi situasi balapan waktu. Berikut ini menawarkan solusi yang menunggu elemen skrip google dimuat sebelum memanggil google.load. Berikut ini contohnya:
sumber
Anda tidak perlu menyetel waktu tunggu. Ada cara lain:
Penjelasan:
akan dijalankan setelah berhasil memuat skrip JSAPI, kemudian alert () akan dijalankan setelah google.load () berhasil
sumber
Saya mengalami masalah ini ketika mencoba memindahkan bagian
google.load(…)
dalam$(document).ready(…)
pembungkus jQuery . Memindahkan bagiangoogle.load(…)
belakang di luar fungsi siap sehingga segera dijalankan menyelesaikan masalah.Misalnya, ini tidak berhasil:
Tapi ini memang:
sumber