Saya memiliki masalah dengan web setelah menambahkan ikon ke Layar Utama. Jika web diluncurkan dari Layar Utama, semua tautan akan terbuka di jendela baru di Safari (dan kehilangan fungsionalitas layar penuh). Bagaimana saya bisa mencegahnya? Saya tidak dapat menemukan bantuan, hanya pertanyaan yang sama yang belum terjawab.
iphone
safari
iphone-standalone-web-app
Pavel Linkesch
sumber
sumber
scope
parameter dalammanifest.json
. Lihat jawaban saya untuk lebih jelasnya. Saya telah mengujinya di iOS 11.3 dan tidak berfungsi.Jawaban:
Saya menemukan solusi JavaScript dalam kerangka kerja iWebKit :
sumber
[].forEach.call(document.links, function(link) { link.addEventListener("click", function(event) { event.preventDefault(); window.location = this.href; }) });
Solusi lain di sini tidak memperhitungkan tautan eksternal (yang mungkin ingin Anda buka secara eksternal di Safari) atau tidak memperhitungkan tautan relatif (tanpa domain di dalamnya).
Proyek html5 mobile-boilerplate menautkan ke inti ini yang memiliki diskusi yang bagus tentang topik ini: https://gist.github.com/1042026
Inilah kode terakhir yang mereka buat:
sumber
Jika Anda menggunakan jQuery, Anda dapat melakukan:
sumber
this.href
daripada casting ke objek jQuery, tapi terima kasih atas jawaban ini. Bekerja di iOS6.Ini berfungsi untuk saya di iOS 6.1 dan dengan tautan Bootstrap JS (mis. Menu dropdown dll)
sumber
$('a').on('click'
, function (e) {`with$('area').on('click'
, function (e) {` tetapi itu sepertinya tidak berhasil juga. Ada ide?a
denganhref="#"
maka Anda dapat lebih spesifik pada pemilih jquery, misalnya$('a[href!="#"]')
Ini adalah pertanyaan lama dan banyak solusi di sini menggunakan javascript. Sejak itu, iOS 11.3 telah dirilis dan sekarang Anda dapat menggunakan anggota lingkup . Anggota lingkup adalah URL seperti di
"/"
mana semua jalur di bawah lingkup itu tidak akan membuka halaman baru.Ini contoh saya:
Anda juga dapat membaca lebih lanjut di sini . Saya juga merekomendasikan menggunakan generator yang akan menyediakan fungsionalitas ini.
sumber
Berdasarkan jawaban Davids dan komentar Richards, Anda harus melakukan pemeriksaan domain. Jika tidak, tautan ke situs web lain juga akan dibuka di aplikasi web Anda.
sumber
Jika menggunakan jQuery Mobile Anda akan mengalami jendela baru saat menggunakan atribut data-ajax = 'false'. Bahkan, ini akan terjadi setiap kali ajaxEnabled dimatikan, sedang oleh dan tautan eksternal, oleh pengaturan $ .mobile.ajaxEnabled atau dengan memiliki atribut target = ''.
Anda dapat memperbaikinya menggunakan ini:
(Terima kasih kepada Richard Poole untuk metode live () - tidak bekerja dengan bind ())
Jika Anda telah mematikan ajaxEnabled secara global, Anda harus melepaskan [data-ajax = 'false'].
Ini butuh waktu agak lama bagi saya untuk mencari tahu karena saya mengharapkannya menjadi masalah khusus jQuery Mobile di mana sebenarnya itu adalah tautan Ajax yang sebenarnya melarang jendela baru.
sumber
Kode ini berfungsi untuk iOS 5 (berfungsi untuk saya):
Di tag kepala:
Di tautan yang ingin Anda buka di jendela yang sama:
Saya mendapat kode ini dari komentar ini: tag meta aplikasi web iphone
sumber
Mungkin Anda harus mengizinkan untuk membuka tautan di jendela baru ketika target secara eksplisit diatur ke "_blank" juga:
sumber
Saya telah menemukan satu yang sangat lengkap dan efisien karena memeriksa untuk berjalan hanya di bawah WebApp mandiri, bekerja tanpa jQuery dan juga mudah, hanya diuji di iOS 8.2:
Tetap Standalone: Cegah tautan di aplikasi web mandiri yang membuka Mobile Safari
sumber
Anda juga dapat melakukan penautan hampir secara normal:
Dan Anda dapat menghapus tag hash dan href, semua yang dilakukannya mempengaruhi penampilan ..
sumber
Inilah yang bekerja untuk saya di iOS 6 (adaptasi yang sangat sedikit dari jawaban rmarscher):
sumber
Ini adalah versi Sean yang sedikit diadaptasi yang mencegah tombol kembali
});
sumber
Bagi mereka dengan Twitter Bootstrap dan Rails 3
Hapus tautan masih bekerja dengan cara ini.
sumber
Saya lebih suka membuka semua tautan di dalam mode aplikasi web mandiri kecuali yang memiliki target = "_ blank". Menggunakan jQuery, tentu saja.
sumber
Satu solusi yang saya gunakan untuk aplikasi web iOS adalah bahwa saya membuat semua tautan (yang merupakan tombol oleh CSS) dari tombol kirim. Jadi saya membuka formulir yang diposting ke tautan tujuan, lalu input type = "submit" Bukan cara terbaik, tapi itulah yang saya temukan sebelum saya menemukan halaman ini.
sumber
Saya membuat paket installable bower dari jawaban @ rmarscher yang dapat ditemukan di sini:
http://github.com/stylr/iosweblinks
Anda dapat dengan mudah menginstal snippet dengan menggunakan bower
bower install --save iosweblinks
sumber
Bagi yang menggunakan
JQuery Mobile
, solusi di atas memecah dialog popup. Ini akan menjaga tautan di dalam webapp dan memungkinkan popup.Bisa juga dengan:
sumber
Inilah yang akan saya gunakan untuk semua tautan di halaman ...
Jika Anda menggunakan jQuery atau Zepto ...
sumber
Anda cukup menghapus tag meta ini.
sumber