Saya memiliki situs yang memiliki masalah khusus IE8:
Kodenya adalah:
var w = window.open(urlstring, wname, wfeatures, 'false');
Kesalahannya adalah:
Pesan: Argumen tidak valid.
Baris: 419 Karakter: 5
Kode: 0
URI: http: //HOSTNAME/js_context.js
Saya telah mengonfirmasi nomor baris kode ("Baris" dan "URI" sudah benar), dan saya mengerti di versi IE8 yang lebih baru, ini dianggap akurat.
Saya telah memeriksa semua parameter yang masuk dalam panggilan dengan membuang peringatan, dan semuanya terlihat valid.
Masalah ini tidak terjadi di FF (mungkin 3).
MEMPERBARUI:
Masalahnya tampaknya dalam menggunakan menetapkan hasil window.open () saat melakukan "var w". Ketika saya membagi baris menjadi dua pernyataan itu berfungsi di IE8.
UPDATE2:
Berdasarkan:
http://javascript.crockford.com/code.html
Jika suatu fungsi akan dipanggil segera, seluruh ekspresi pemanggilan harus dibungkus dalam tanda kurung sehingga jelas bahwa nilai yang dihasilkan adalah hasil dari fungsi dan bukan fungsi itu sendiri.
Ini tidak persis apa yang terjadi di sini, tetapi saya menemukan bahwa menerapkan prinsip memecahkan masalah, dalam mode kompatibilitas IE8.
var w = (window.open(urlstring, wname, wfeatures, false));
Jawaban:
Ini adalah postingan lama tapi mungkin masih berguna untuk seseorang.
Saya mendapat pesan kesalahan yang sama. Pada akhirnya masalahnya adalah nama yang tidak valid untuk argumen kedua, yaitu, saya memiliki baris seperti:
Masalahnya adalah 'judul jendela' karena tidak valid. Ini bekerja dengan baik dengan baris berikut:
Bahkan, membaca dengan cermat saya menyadari bahwa Microsoft tidak mendukung
name
argumen kedua. Saat Anda melihat halaman dokumentasi resmi , Anda melihat bahwa Microsoft hanya mengizinkan argumen berikut, Jika menggunakan argumen itu sama sekali:sumber
IE pilih-pilih tentang argumen nama jendela. Itu tidak menyukai spasi, tanda hubung, atau tanda baca lainnya.
sumber
Saat Anda memanggil
window.open
di IE, argumen kedua (nama jendela) harus berupa salah satu string target yang telah ditentukan sebelumnya atau string, yang memiliki bentuk pengenal yang valid di JavaScript.Jadi apa yang berfungsi di Firefox: "Job Directory 9463460", tidak berfungsi di Internet Exploder, dan harus diganti dengan: "Job_Directory_9463460" misalnya (tanpa spasi, tanpa tanda minus, tanpa titik, harus menjadi pengenal yang valid) .
sumber
masalahnya mungkin wname, coba gunakan salah satu dari yang ditunjukkan pada tautan di atas, saya kutip:
jika menggunakan wname lain, window.open tidak akan dijalankan ...
sumber
Sebenarnya sebuah nama dapat digunakan namun tidak boleh memiliki spasi jadi
window.open("../myPage","MyWindows",...)
seharusnya berfungsi tanpa masalah ( window.open ).sumber
Saya juga mengalami masalah ini saat saya menggunakan kode berikut:
tetapi ketika saya menghapus ruang kosong dari "Judul jendela" , kode di bawah ini berfungsi:
sumber
Hai menggunakan kode berikut ini berfungsi ...
Sebelumnya saya Masuk suka
Berarti Microsoft tidak mengizinkan Anda memasukkan nama jendela itu harus kosong dalam
window.open
fungsi ...Terima kasih, Nilesh Pangul
sumber
Bagi saya masalahnya adalah dengan tanda hubung "-" di bidang nama jendela. Saya menghapus tanda hubung dan IE tidak keluar kesalahan dan sebenarnya membuka jendela.
sumber
Apa yang direpresentasikan oleh posisi empat, yang memiliki nilai 'salah'? Bukankah seharusnya itu salah, (yaitu tanpa tanda kutip?). Ada kemungkinan bahwa versi IE sebelumnya akan memaksa string menjadi boolean, tetapi yang lebih baru tidak.
sumber
Jawaban di sini benar karena IE tidak mendukung spasi saat menyetel judul di window.open (), sepertinya tidak ada yang menawarkan solusi.
Saya menghapus judul dari panggilan window.open saya (Anda dapat menggunakan null atau ''), dan hten menambahkan yang berikut ini ke halaman yang sedang dibuka:
Tidak ideal dengan cara apa pun, tetapi ini memungkinkan Anda menyetel judul menjadi apa pun yang Anda inginkan di semua browser.
sumber
Coba hapus argumen terakhir. Selain itu, pastikan urlstring, wname, dan wfeatures ada.
sumber
Saya menemukan masalah yang sama dan setelah membaca jawaban pertama yang mengira masalahnya disebabkan oleh nama jendela, mengubahnya: pertama menjadi '_blank', yang berfungsi dengan baik (kompatibilitas dan tampilan reguler), lalu ke nilai sebelumnya, hanya minus ruang di nilai :) - juga bekerja. IMO, masalah (atau bagian darinya) disebabkan oleh IE tidak dapat menggunakan nilai string normal sebagai wname. Semoga ini bisa membantu jika ada yang mengalami masalah yang sama.
sumber
Jika Anda ingin menggunakan nama jendela baru dll memposting formulir ke jendela ini, maka solusinya, yang berfungsi di IE, FF, Chrome:
sumber
Tampaknya meskipun menggunakan nama jendela khusus yang "valid" (bukan _blank, dll.) Menggunakan window.open untuk meluncurkan jendela baru, masih ada masalah. Ini berfungsi dengan baik saat pertama kali Anda mengeklik tautan, tetapi jika Anda mengekliknya lagi (dengan jendela pertama yang diluncurkan masih terbuka) Anda menerima debug skrip "Galat: Tidak ada antarmuka yang didukung".
sumber