Saya mencoba mencari tahu mengapa sesuatu dengan Javascript tidak berfungsi di dalam UIWebView. Setahu saya, tidak ada cara untuk mengatur breakpoint di dalam XCode untuk file js. Tidak masalah, saya hanya akan kembali ke tahun 2004 dan menggunakan statemen lansiran - oh, tunggu, tampaknya juga tidak berfungsi di dalam UIWebView!
Satu-satunya hal yang dapat saya pikirkan adalah dengan mengekspor file HTML dan JS ke desktop saya dan kemudian melakukan debugging di dalam Safari. Dan itu berhasil! Tapi tentu saja, bug yang saya lawan di UIWebView tidak terjadi di Safari.
Apakah ada cara lain untuk men-debug di dalam UIWebView, atau trik apa pun yang dapat saya gunakan seperti menggunakan metode peringatan old-school?
sumber
Settings
>Safari
>Advanced
>Web Inspector
<- mengaktifkan iniQuery ini berada di puncak Google, sangat layak untuk ditautkan ke remoteInspector yang disembunyikan di iOS5 - sejauh ini cara terbaik yang ditemukan sejauh ini untuk men-debug UIWebViews - hanya kompilasi bersyarat sebelum Anda mengirim ke Apple.
sumber
[NSClassFromString(@"WebView") performSelector:@selector(_enableRemoteInspector)];
Ingatlah untuk menghapus panggilan saat Anda membangun untuk pembebasan!alert () tentu saja bekerja untuk saya.
Namun, Anda juga dapat melakukan banyak hal lain, seperti membuat peringatan DHTML Anda sendiri yang muncul di layer. Ini bisa menyenangkan karena Anda dapat melakukan banyak peringatan ke satu div, tanpa menghentikan aplikasi Anda. Anda juga harus bisa menulis jejak stack untuk itu (jejak stack berada di objek pengecualian, dan Anda selalu dapat membuang pengecualian Anda sendiri).
Atau, jika berjalan di simulator, "lansiran ()" kustom Anda dapat memanggil ke tujuan C, dan menampilkan string di jendela konsol iPhone simulator:
dan di sisi C objektif:
Yang mengatakan, saya memiliki aplikasi yang berat pada hal-hal UiWebView / javascript, dan saya cenderung melakukan sebagian besar javascript dev di Chrome (mensimulasikan apa yang diperlukan dari lingkungan iPhone)
sumber
Saya harap ini akan membantu.
Langkah 1: Buka Safari VC di Mac Anda (hahaha Jangan buat wajah Anda, Jika saya katakan di Macbook Anda cukup ikuti langkah saya ini)
Step2: Buka preferensi Safari Dan Klik di Muka. Anda akan mendapatkan pengaturan ini di Layar MacBook Anda.
Sekarang aktifkan Tampilkan untuk mengembangkan menu di bilah menu. Sekarang semua pekerjaan Anda selesai. Apakah Anda berpikir saya bercanda: P: P no man ...
Langkah 3: Jalankan aplikasi Anda di Perangkat atau Simulator. (Jangan Berpikir jalankan saja) Dan masuk ke aplikasi Anda di mana Anda membuka Webview atau SFSafariViewController Anda. Sampai sekarang Anda tidak mengerti saya tahu. Tenang dan lihat langkah saya selanjutnya.
Langkah4: Buka Safari di MacBook Anda dan Klik Opsi Kembangkan dari bilah Menu. Apakah Anda mendapatkan sesuatu dari MacBook Anda, iPad / iPhone Menampilkan Benar ?????
Step5: Selesai. klik perangkat Anda dan klik pada URL popup baru akan keluar seperti ini.
Step6: apa yang Anda cari sekarang di sini semua langkah.
IMP: Jangan lupa untuk mengaktifkan Lihat Di Bawah Gambar
sumber
Saya belum mencoba ini, tetapi lihatlah Weinre ini
Terlihat sangat menjanjikan.
sumber
Ini pertanyaan lama. Tapi saya masih ingin berbagi dua sen.
Saya telah menggunakan jsconsole.com untuk debugging jarak jauh. Mudah. Cukup sertakan tag skrip dan gunakan log konsol untuk melakukan debug dengan mencetak. Ini juga dapat digunakan untuk debugging pada perangkat nyata.
sumber
Pertanyaan lama, tapi saya pikir saya menemukan solusi terbaik, dalam kasus saya Anda perlu men-debug uiwebview, tapi saya tidak punya akses ke aplikasi IOS dan hanya untuk konten html dan saya harus melihat beberapa log JS, saya menambahkan kode berikut, saya menambahkan kode berikut untuk memuat JS firebug ringan dan menunjukkannya secara otomatis:
memanggilnya dari JS
atau muat dari html
sumber
Anda dapat mengatur sistem seperti yang digunakan dalam PhoneGap untuk mengirim pesan dari JavaScript ke Objective-C dan masuk dari sana. Singkatnya, mereka sedang mengatur dokumen. Lokasi dengan skema khusus dan memblokir skema itu dalam panggilan balik delegasi.
Anda dapat memanfaatkan fakta bahwa UIWebView adalah sebagian besar delegasi untuk WebView. WebKit secara teknis tidak terdokumentasi untuk iPhone, tetapi sebagian besar sama seperti yang ditentukan dalam header WebKit desktop, mungkin termasuk WebScriptObject. Saya menggunakan ini untuk debugging, tetapi pastikan untuk menghapus kode ini sebelum mengirimkan ke Apple.
Untuk mendapatkan WebView dari UIWebView, terapkan metode delegasi seperti
-(void) webView:(id)inWebView didFinishLoadForFrame:(id)inWebFrame
pada subkelas UIWebView. Panggil super jika Anda menggunakan yang itu.sumber