Apakah ada cara tanpa skrip Javascript / sisi server untuk menautkan ke nomor port yang berbeda pada kotak yang sama, jika saya tidak tahu nama host?
misalnya:
<a href=":8080">Look at the other port</a>
(Contoh ini tidak berfungsi karena hanya akan memperlakukan: 8080 sebagai string yang ingin saya navigasikan)
$http_host
var berfungsi, misalnya:return 200 '<html><body><iframe id="ic" src="http://$http_host:2812/"></iframe></body></html>
yaitu dalam sebuah/etc/nginx/conf.d/strange.conf
file.Jawaban:
Akan lebih baik jika ini bisa bekerja, dan saya tidak melihat mengapa tidak karena
:
merupakan karakter cadangan untuk pemisahan port di dalam komponen URI, sehingga browser dapat secara realistis menafsirkan ini sebagai port relatif terhadap URL ini, tetapi sayangnya itu tidak t dan tidak ada cara untuk melakukan itu.Karena itu, Anda perlu Javascript untuk melakukan ini;
Diuji dalam Firefox 4
Fiddle: http://jsfiddle.net/JtF39/79/
Pembaruan : Bug yang diperbaiki untuk menambahkan port ke akhir url dan juga menambahkan dukungan untuk url relatif dan absolut untuk ditambahkan ke akhir:
sumber
http://myhost:8080/:8080
untukhref=":8080"
. Anda dapat menambahkan baris ini di bawah `target.port = port [1];` untuk memperbaikinya.target.href = target.href.replace("/:"+target.port, "");
(Ini bukan solusi yang sempurna, karena ini adalahBagaimana dengan ini:
Ubah nomor port saat klik:
Namun, jika Anda mengarahkan mouse ke tautan, itu tidak menunjukkan tautan dengan nomor port baru yang disertakan. Tidak sampai Anda mengkliknya itu menambahkan nomor port. Juga, jika pengguna mengklik kanan tautan dan melakukan "Salin Lokasi Tautan", mereka mendapatkan URL yang tidak dimodifikasi tanpa nomor port. Jadi ini tidak ideal.
Berikut adalah metode untuk mengubah URL setelah halaman dibuka, jadi dengan mengarahkan tautan atau melakukan "Salin Lokasi Tautan" akan mendapatkan URL yang diperbarui dengan nomor port:
sumber
<a href="#" onclick="javascript:event.target.port=8888">port 8888</a>
seharusnya tidak berfungsi secara teknis, sesuai dengan spesifikasi w3 .event.target
seharusnyareadonly
. Tapi sepertinya itu bekerja untuk saya di Chrome dan Firefox!Anda dapat melakukannya dengan mudah menggunakan document.write dan URL akan ditampilkan dengan benar ketika Anda mengarahkan kursor ke sana. Anda juga tidak memerlukan ID unik menggunakan metode ini dan ini berfungsi dengan Chrome, FireFox dan IE. Karena kami hanya mereferensikan variabel dan tidak memuat skrip eksternal, menggunakan document.write di sini tidak akan memengaruhi kinerja pemuatan laman.
sumber
window.location.protocol
bagian, cukup mulai dengan'//'
.document.write
hampir secara universal tidak direkomendasikan saat ini. Akan lebih baik untuk melakukan sesuatu sepertimyElement.innerHTML = '...'
Ubah nomor port pada mouseover:
Ini merupakan peningkatan dari https://stackoverflow.com/a/13522508/1497139 yang tidak memiliki penarikan kembali karena tidak menampilkan tautan dengan benar.
sumber
Tanpa JavaScript, Anda harus bergantung pada beberapa skrip sisi server. Misalnya, jika Anda menggunakan ASP, sesuatu seperti ...
harus bekerja. Namun, format yang tepat akan tergantung pada teknologi yang Anda gunakan.
sumber
Setelah bergulat dengan ini, saya benar-benar menemukan bahwa SERVER_NAME adalah variabel yang dipesan. Jadi, jika Anda berada di halaman (www.example.com:8080) Anda harus dapat menjatuhkan 8080 dan meminta port lain. Misalnya kode yang dimodifikasi ini hanya bekerja untuk saya dan memindahkan saya dari port dasar ke port 8069 (ganti port Anda sesuai kebutuhan)
sumber
<a href="https://<?php print $_SERVER{'SERVER_NAME'}; ?>:8069">
Lebih baik mendapatkan url dari variabel server:
sumber
Tidak perlu javascript yang rumit: cukup masukkan node script setelah jangkar Anda, kemudian dapatkan node dalam javascript, dan modifikasi properti href -nya dengan metode window.location.origin .
Properti id harus lebar halaman unik, jadi Anda mungkin ingin menggunakan metode lain untuk mengambil objek node.
Diuji dengan apache dan Firefox di Linux.
sumber
http//localhost:8081
, perhatikan titik dua yang hilang. Saya baru saja menghapus bagian protokol karena Chrome mengasumsikan http.window.location.hostname
. Lihat developer.mozilla.org/en-US/docs/Web/API/LocationSolusi ini terlihat lebih bersih bagi saya
sumber
Berdasarkan jawaban Gary Hole , tetapi perubahan url pada memuat halaman alih-alih pada klik.
Saya ingin menunjukkan url menggunakan css:
Jadi saya membutuhkan href anchor untuk dikonversi agar mengandung url aktual yang akan dikunjungi.
Panggil fungsi di atas saat memuat halaman.
atau pada satu baris:
(Saya menggunakan
for
bukannyaforEach
itu berfungsi di IE7.)sumber
Tidak ada jawaban yang saya lihat (dan saya akan mengatakan, saya tidak membaca semuanya) sesuaikan URL sehingga klik tengah atau "buka di tab baru" akan berfungsi dengan baik - hanya klik biasa untuk mengikuti tautan. Saya meminjam dari jawaban Gary Greene, dan alih-alih menyesuaikan URL saat itu, kami dapat menyesuaikannya saat halaman dimuat:
sumber