ie8 var w = window.open () - "संदेश: अमान्य तर्क।"


113

मैं एक साइट है कि एक IE8 केवल समस्या है:

कोड है:

var w = window.open(urlstring, wname, wfeatures, 'false');

त्रुटि है:

संदेश: अमान्य तर्क।
पंक्ति: ४१ ९ चार: ५
कोड: ०
यूआरआई: http: //HOSTNAME/js_context.js

मैंने कोड की लाइन संख्या ("लाइन" और "URI" सही हैं) की पुष्टि की है, और मैं IE8 के बाद के संस्करणों में समझता हूं, यह सटीक माना जाता है।

मैंने कॉल में आने वाले सभी मापदंडों को अलर्ट डंप करके चेक किया है, और वे सभी वैध लगते हैं।

यह समस्या एफएफ (शायद 3) पर नहीं होती है।

अपडेट करें:

समस्या "var w" करते समय window.open () का परिणाम निर्दिष्ट करने में होती है। जब मैं दो बयानों में लाइन को विभाजित करता हूं तो यह IE8 में काम करता है।

UPDATE2:

पर आधारित:

http://javascript.crockford.com/code.html

जब किसी फ़ंक्शन को तुरंत आमंत्रित किया जाना है, तो पूरे आह्वान की अभिव्यक्ति को Parens में लपेटा जाना चाहिए ताकि यह स्पष्ट हो कि उत्पादित किया जा रहा मूल्य फ़ंक्शन का परिणाम है न कि फ़ंक्शन का।

यह ठीक वैसा नहीं है जैसा यहां चल रहा है, लेकिन मैंने पाया कि सिद्धांत को लागू करने से समस्या का हल IE8 की कॉम्पिटिबिलिटी मोड में हो गया है।

var w = (window.open(urlstring, wname, wfeatures, false));

मुझे भी यही समस्या थी, और डेविड की पोस्ट सबसे अच्छा जवाब है। आपकी पोस्ट के लिए और डेविड की मदद के लिए धन्यवाद।
एरविन

जवाबों:


251

यह एक पुरानी पोस्टिंग है लेकिन शायद अभी भी किसी के लिए उपयोगी है।

मेरे पास एक ही त्रुटि संदेश था। अंत में समस्या दूसरे तर्क के लिए एक अमान्य नाम थी, अर्थात, मेरे पास एक पंक्ति थी जैसे:

   window.open('/somefile.html', 'a window title', 'width=300');

समस्या 'विंडो टाइटल' थी क्योंकि यह मान्य नहीं है। यह निम्नलिखित पंक्ति के साथ ठीक काम करता है:

   window.open('/somefile.html', '', 'width=300');

वास्तव में, ध्यान से पढ़ने पर मुझे एहसास हुआ कि Microsoft एक nameदूसरे तर्क के रूप में समर्थन नहीं करता है। जब आप आधिकारिक दस्तावेज़ीकरण पृष्ठ को देखते हैं, तो आप देखते हैं कि Microsoft केवल निम्नलिखित तर्कों की अनुमति देता है, यदि वह तर्क का उपयोग कर रहा है:

  • _blank
  • _media
  • _parent
  • _खोज
  • _self
  • _ऊपर

1
मुझे लगता है कि मैंने इस समारोह के मोज़िला स्पष्टीकरण की जांच करने के लिए उपेक्षा की थी, क्योंकि मैं (पूछनेवाला) IE8- केवल टूटने पर केंद्रित था।
बेंस

2
सीधे शब्दों में कहें: developer.mozilla.org/en/DOM/window.open -> "strWindowName नई विंडो का शीर्षक निर्दिष्ट नहीं करता है।"
बेन

33
IE में भी मुझे यह त्रुटि हुई थी जब मेरी खिड़कियों के नाम में पानी का छींटा था "-" जैसे कि "मेरा-पवन का नाम", IE गुणवत्ता मुझे विस्मित करना कभी नहीं छोड़ती।
मैट पामरली जुले

1
MSDN दस्तावेज़ीकरण पृष्ठ जो आपने राज्यों से जोड़ा है "वैकल्पिक। स्ट्रिंग जो कि विंडो का नाम निर्दिष्ट करता है।", जो मुझे लगता है जैसे आप ऊपर सूचीबद्ध तर्कों के अलावा किसी भी कीवर्ड के लिए सक्षम होना चाहिए।
जेम्स मैकमोहन

3
यह IE8 में ImageDisplay1234 जैसे नामों के साथ काम करता है, लेकिन इमेज-डिस्प्ले
-1234 के

78

IE खिड़की के नाम तर्क के बारे में picky है। यह रिक्त स्थान, डैश या अन्य विराम चिह्न पसंद नहीं करता है।


3
या डॉट्स या डैश या शायद अन्य विराम चिह्न
बोटकोडर

धन्यवाद यह मददगार है..मुझे आईई 6-10 से नफरत है
दिलीप गोधानी

16

जब आप window.openIE में कॉल करते हैं , तो दूसरा तर्क (विंडो नाम) को पूर्वनिर्धारित लक्ष्य स्ट्रिंग्स या स्ट्रिंग में से एक होना चाहिए , जिसमें जावास्क्रिप्ट में मान्य पहचानकर्ता का एक रूप है

तो फ़ायरफ़ॉक्स में क्या काम करता है: "जॉब डायरेक्टरी 9463460", इंटरनेट एक्सप्लोडर में काम नहीं करता है , और इसके द्वारा प्रतिस्थापित किया जाना है: "Job_Directory_9463460" उदाहरण के लिए (कोई रिक्त स्थान, कोई ऋण चिह्न, कोई डॉट्स, यह एक वैध पहचानकर्ता होना चाहिए) ।


धन्यवाद .. इससे मुझे मदद मिली .. मैंने अपने विंडो नाम
डेलक्स 247

8

समस्या wname हो सकती है, ऊपर दिए गए लिंक में दिखाए गए किसी एक का उपयोग करके देखें, मैं बोली:

वैकल्पिक। स्ट्रिंग जो विंडो का नाम निर्दिष्ट करती है। इस नाम का उपयोग फॉर्म या एंकर तत्व पर TARGET विशेषता के लिए मान के रूप में किया जाता है।

  • _blank sURL को एक नई, अनाम विंडो में लोड किया गया है।
  • _media Microsoft इंटरनेट एक्सप्लोरर 6. Microsoft Windows XP सर्विस पैक 2 (SP2) में मीडिया बार और बाद में url लोड किया गया है। यह सुविधा अब समर्थित नहीं है। डिफ़ॉल्ट रूप से url एक नई ब्राउज़र विंडो या टैब में लोड होता है।
  • _parent sURL को वर्तमान फ्रेम के जनक में लोड किया गया है। यदि फ़्रेम में कोई पैरेंट नहीं है, तो यह मान _self मान के रूप में कार्य करता है।
  • _search Windows Internet Explorer 7 में अक्षम, विवरण के लिए Internet Explorer 7 में सुरक्षा और संगतता देखें। अन्यथा, इंटरनेट एक्सप्लोरर 5 या बाद में ब्राउज़र के खोज फलक में sURL खोला जाता है।
  • _ स्वयं वर्तमान दस्तावेज़ को निर्दिष्ट sURL के साथ बदल दिया गया है।
  • _top sURL किसी भी फ़्रेमसेट को प्रतिस्थापित करता है जिसे लोड किया जा सकता है। यदि कोई फ़्रेमसेट परिभाषित नहीं हैं, तो यह मान _self के रूप में कार्य करता है।

अगर किसी अन्य wname का उपयोग करते हैं, तो window.open निष्पादित नहीं होगा ...


5
वह अंतिम कथन सही नहीं है। आप उस पृष्ठ के पृष्ठ को लोड करने के लिए एक मौजूदा फ्रेम का नाम भी निर्दिष्ट कर सकते हैं, (बी) वहां पृष्ठ लोड करने के लिए एक मौजूदा "नामित विंडो" का नाम निर्दिष्ट करें, या (सी) एक नाम निर्दिष्ट करें जो doesn ' एक "नामित खिड़की" बनाने के लिए मौजूद नहीं है।
बेन ब्लैंक

मुझे एक ही समस्या थी सिवाय इसके कि मैं window.open के परिणाम को एक चर में सेट नहीं कर रहा था। Wname वैरिएबल में एक पेज का शीर्षक था। इसे '_blank' में बदल दिया और इसने समस्या को ठीक कर दिया।
डेरेक व्हाइट

जो मैंने इसे सीमित कर दिया था, उसमें शामिल नहीं है - या। जब मैंने विराम चिह्न-प्रदर्शन -1234 से छुटकारा पाया -> ImageDisplay1234 तब सब ठीक था।
बोटकोड

1
बेन के तर्क का समर्थन करने के लिए, यह MSDN window.open के 2 पैरामीटर के बारे में कहता है: "स्ट्रिंग जो विंडो का नाम निर्दिष्ट करती है। इस नाम का उपयोग फॉर्म या एंकर तत्व पर TARGET विशेषता के लिए मान के रूप में किया जाता है।" और यहाँ TARGET विशेषता doc: msdn.microsoft.com/en-us/library/ms534659(v=vs.85).aspx है । यह स्पष्ट रूप से कहता है कि लक्ष्य एक मनमाना स्ट्रिंग हो सकता है न कि इस उत्तर में सूचीबद्ध मान।
niaher

5

वास्तव में एक नाम का उपयोग किया जा सकता है, लेकिन इसमें रिक्त स्थान नहीं हो सकते हैं इसलिए window.open("../myPage","MyWindows",...)बिना किसी समस्या के काम करना चाहिए ( window.open )।


4

जब मैं निम्नलिखित कोड का उपयोग करता हूं तो मैं इस मुद्दे को भी पूरा करता हूं:

window.open('test.html','Window title','width=1200,height=800,scrollbars=yes');

लेकिन जब मैं "विंडो शीर्षक" के रिक्त स्थान को हटाता हूं तो नीचे दिया गया कोड काम कर रहा है:

window.open('test.html','Windowtitle','width=1200,height=800,scrollbars=yes');

यह बहुत मददगार था। मेरे रिक्त स्थान को _ के साथ समाप्त किया। बेवकूफ IE!
मृगलास

2

हाय निम्नलिखित कोड का उपयोग कर अपने काम ...

onclick="window.open('privacy_policy.php','','width=1200,height=800,scrollbars=yes');

पहले मुझे पसंद था

onclick="window.open('privacy_policy.php','Window title','width=1200,height=800,scrollbars=yes');

इसका मतलब है कि Microsoft आपको विंडो नाम दर्ज करने की अनुमति नहीं देता है, यह window.openफ़ंक्शन में रिक्त होना चाहिए ...

धन्यवाद, नीलेश पंगुल


यह गलत है, यह रिक्त हो सकता है लेकिन रिक्त नहीं होना चाहिए।
जिमी बोस

2

मेरे लिए यह मुद्दा विंडो नाम के क्षेत्र में एक डैश "-" के साथ था। मैंने डैश हटा दिया और IE त्रुटि नहीं करता है और वास्तव में खिड़की खोलता है।


1

स्थिति चार क्या दर्शाती है, वह जो मूल्य के रूप में 'झूठी' है? यह गलत नहीं होना चाहिए (यानी उद्धरण के बिना?)। यह संभव है कि IE के पहले संस्करण एक बूलियन के लिए स्ट्रिंग को मनाएंगे, लेकिन नए नहीं हैं।


मैंने उद्धरण हटा दिए, लेकिन यह IE8 के लिए समस्या का स्रोत नहीं था।
benc

1

यहाँ उत्तर सही हैं कि IE विंडो (शीर्षक) में शीर्षक सेट करते समय रिक्त स्थान का समर्थन नहीं करता है, कोई भी वर्कअराउंड की पेशकश नहीं करता है।

मैंने अपनी विंडो से शीर्षक हटा दिया। फिर भी कॉल करें (आप अशक्त या '' का उपयोग कर सकते हैं), और hten ने पेज को खोलने के लिए निम्नलिखित जोड़ा:

<script>document.title = 'My new title';</script>

किसी भी तरह से आदर्श नहीं है, लेकिन यह आपको सभी ब्राउज़रों में जो भी आप चाहते हैं, शीर्षक को सेट करने की अनुमति देगा।


0

अंतिम तर्क को हटाने का प्रयास करें। इसके अलावा, सुनिश्चित करें कि urlstring, wname और wfeatures मौजूद हैं।


0

मैंने उसी समस्या की खोज की और पहला उत्तर पढ़ने के बाद माना कि यह समस्या विंडो नाम के कारण है, इसे बदल दिया: पहले '_blank' में, जिसने ठीक काम किया (अनुकूलता और नियमित दृश्य दोनों), फिर पिछले मान में, केवल घटा मूल्य में स्थान :) - भी काम किया। IMO, समस्या (या इसका एक हिस्सा) IE द्वारा wname के रूप में एक सामान्य स्ट्रिंग मान का उपयोग करने में असमर्थ होने के कारण होता है। आशा है कि यह मदद करता है अगर कोई भी एक ही समस्या में चलाता है।


0

यदि आप इस विंडो में एक फॉर्म पोस्ट करते हुए नई विंडो आदि के नाम का उपयोग करना चाहते हैं, तो समाधान, जो IE, FF, Chrome में काम कर रहा है:

  var ret = window.open("", "_blank");
  ret.name = "NewFormName";

  var myForm = document.createElement("form");
  myForm.method="post";
  myForm.action = "xyz.php";
  myForm.target = "NewFormName";

      ...

0

ऐसा लगता है जब एक "वैध" कस्टम विंडो नाम (_blank, आदि नहीं) का उपयोग करके भी एक नई विंडो लॉन्च करने के लिए window.open का उपयोग करना, अभी भी समस्या है। पहली बार जब आप लिंक पर क्लिक करते हैं तो यह ठीक काम करता है, लेकिन यदि आप इसे फिर से क्लिक करते हैं (पहली लॉन्च की गई विंडो अभी भी ऊपर है) तो आपको "त्रुटि: कोई ऐसा इंटरफ़ेस समर्थित नहीं" स्क्रिप्ट डीबग प्राप्त होता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.