Saya perlu mengekstraksi konten tag judul dari halaman HTML yang ditampilkan di UIWebView. Apa cara paling kuat untuk melakukannya?
Saya tahu saya bisa melakukannya:
- (void)webViewDidFinishLoad:(UIWebView *)webView{
NSString *theTitle=[webView stringByEvaluatingJavaScriptFromString:@"document.title"];
}
Namun, itu hanya berfungsi jika javascript diaktifkan.
Atau, saya hanya bisa memindai teks dari kode HTML untuk judul tetapi rasanya agak rumit dan mungkin terbukti rapuh jika penulis halaman menjadi aneh dengan kode mereka. Jika itu yang terjadi, apa metode terbaik untuk digunakan untuk memproses teks html dalam iPhone API?
Saya merasa bahwa saya lupa sesuatu yang jelas. Apakah ada metode yang lebih baik daripada dua pilihan ini?
Memperbarui:
Berikut dari jawaban untuk pertanyaan ini: UIWebView: Dapatkah Anda Menonaktifkan Javascript? tampaknya tidak ada cara untuk mematikan Javascript di UIWebView. Karenanya metode Javascript di atas akan selalu berfungsi.
sumber
Jawaban:
Bagi yang baru saja gulir ke bawah untuk menemukan jawabannya:
Ini akan selalu berfungsi karena tidak ada cara untuk mematikan Javascript di UIWebView.
sumber
WKWebView
memiliki properti 'judul', lakukan saja seperti ini,Saya pikir
UIWebView
ini tidak cocok untuk saat ini.sumber
Jika Javascript Diaktifkan Gunakan ini: -
Jika Javascript Dinonaktifkan Gunakan ini: -
Saya Menggunakan +7 dan -7 di NSMakeRange untuk menghilangkan panjang
<title>
yaitu 7sumber
Sunting: baru saja melihat Anda menemukan jawabannya ... sheeeiiitttt
Saya benar-benar baru saja mempelajari ini! Untuk melakukan ini, Anda bahkan tidak perlu membuatnya ditampilkan di UIWebView. (Tapi saat Anda menggunakannya, Anda bisa mendapatkan URL halaman saat ini)
Bagaimanapun, inilah kode dan beberapa penjelasan (lemah):
Jadi kita memiliki kode HTML, sekarang bagaimana cara mendapatkan judulnya? Nah, di setiap dokumen berbasis html, judulnya ditandai oleh This is the Title Jadi mungkin yang paling mudah untuk dilakukan adalah mencari string htmlCode untuk, dan untuk, dan menyubstratkannya sehingga kami mendapatkan barang di antaranya.
Dan itu benar-benar itu! Jadi pada dasarnya untuk menjelaskan semua gangguan yang terjadi di docTitle, jika kita membuat rentang hanya dengan mengatakan NSMakeRange (startRange.location, endRange.location) kita akan mendapatkan judul DAN teks startString (yang) karena lokasinya oleh karakter pertama dari string. Jadi untuk mengimbangi itu, kami hanya menambahkan panjang string
Sekarang perlu diingat kode ini tidak diuji .. jika ada masalah itu mungkin kesalahan ejaan, atau bahwa saya tidak / tidak menambahkan pointer ketika saya tidak seharusnya.
Jika judulnya sedikit aneh dan tidak sepenuhnya benar, coba main-main dengan NSMakeRange - maksud saya seperti menambah / mengurangi panjang / lokasi string yang berbeda --- apa pun yang tampak logis.
Jika Anda memiliki pertanyaan atau ada masalah, jangan ragu untuk bertanya. Ini jawaban pertama saya di situs web ini. Maaf jika sedikit tidak teratur
sumber
Berikut adalah versi Swift 4, berdasarkan jawaban di sini
sumber
Saya tidak memiliki pengalaman dengan tampilan web sejauh ini tetapi, saya percaya itu menetapkan judulnya ke judul halaman, jadi, trik yang saya sarankan adalah menggunakan kategori pada tampilan web dan menimpa setter untuk self.title sehingga Anda menambahkan pesan ke salah satu dari Anda keberatan atau memodifikasi beberapa properti untuk mendapatkan judul.
Bisakah Anda mencoba dan memberi tahu saya jika itu berhasil?
sumber
Jika Anda sering membutuhkannya dalam kode Anda, saya sarankan Anda untuk menambahkan func ke "ekstensi UIWebView" seperti ini
atau lebih baik menggunakan WKWebView.
Sayangnya, itu tidak didukung dengan baik di ARKit. Saya harus menyerah di WKWebView. Saya tidak bisa memuat situs web ke webView. Jika seseorang memiliki solusi untuk masalah ini di sini -> saya memiliki masalah yang sama, itu akan sangat membantu.
sumber