ie8 var w = window.open () - "বার্তা: অবৈধ যুক্তি।"


113

আমার কাছে এমন একটি সাইট রয়েছে যার আইই 8-কেবল সমস্যা রয়েছে:

কোডটি হ'ল:

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

ত্রুটিটি হ'ল:

বার্তা: অবৈধ যুক্তি।
লাইন: 419 চর: 5
কোড: 0
ইউআরআই: http: //HOSTNAME/js_context.js

আমি কোডটির লাইন নম্বরটি ("লাইন" এবং "ইউআরআই" সঠিক) নিশ্চিত করেছি এবং আমি আইই 8 এর পরবর্তী সংস্করণগুলিতে বুঝতে পেরেছি, এটি সঠিক হিসাবে বিবেচিত হয়।

আমি সতর্কতাগুলি ডাম্প করে কলটিতে সমস্ত আগত প্যারামিটারগুলি পরীক্ষা করে দেখেছি এবং সেগুলি সমস্ত বৈধ মনে হচ্ছে।

এফএফ এ সমস্যাটি ঘটে না (সম্ভবত 3)।

হালনাগাদ:

সমস্যাটি "var w" করার সময় উইন্ডো.ওপেন () এর ফলাফল নির্ধারণের ক্ষেত্রে ব্যবহার হিসাবে দেখা দেয়। আমি যখন লাইনটি দুটি বিবৃতিতে বিভক্ত করি তখন এটি IE8 এ কাজ করে।

UPDATE2:

উপর ভিত্তি করে:

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

যখন কোনও ফাংশনটি তাত্ক্ষণিকভাবে আহ্বান করতে হবে, তখন সম্পূর্ণ অনুরোধের অভিব্যক্তিটি পেরেনগুলিতে আবৃত করা উচিত যাতে এটি স্পষ্ট হয় যে উত্পাদিত মানটি ফাংশনের ফল এবং নিজেই ফাংশন নয়।

এখানে ঠিক যা চলছে তা নয়, তবে আমি পেয়েছি যে নীতিটি প্রয়োগ করা আইই 8 এর সামঞ্জস্যতা মোডে সমস্যার সমাধান করেছে।

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

আমারও একই সমস্যা ছিল এবং ডেভিডের পোস্টটি সেরা উত্তর। আপনার পোস্ট এবং ডেভিড সাহায্যের জন্য আপনাকে ধন্যবাদ।
এরভিন

উত্তর:


251

এটি একটি পুরাতন পোস্টিং তবে এটি এখনও কারও জন্য দরকারী।

আমি একই ত্রুটি বার্তা ছিল। শেষ পর্যন্ত সমস্যাটি ছিল দ্বিতীয় তর্কটির একটি অবৈধ নাম, অর্থাত, আমার মতো একটি লাইন ছিল:

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

বৈধ নয় বলে সমস্যাটি 'উইন্ডো শিরোনাম' ছিল। এটি নিম্নলিখিত লাইনের সাথে ভাল কাজ করেছে:

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

আসলে, যত্ন সহকারে পড়া আমি বুঝতে পেরেছি যে মাইক্রোসফ্ট nameদ্বিতীয় যুক্তি হিসাবে সমর্থন করে না । আপনি যখন অফিসিয়াল ডকুমেন্টেশন পৃষ্ঠাটি দেখেন, আপনি দেখতে পাবেন যে মাইক্রোসফ্ট কেবল নিম্নলিখিত যুক্তিগুলিকে মঞ্জুরি দেয়, যদি সেই যুক্তিটি মোটেও ব্যবহার করে থাকে:

  • _blank
  • _মিডিয়া
  • _parent
  • _search
  • _self
  • _top

1
আমি মনে করি আমি এই ফাংশনটির মজিলা ব্যাখ্যা যাচাই করতে অবহেলা করেছি, কারণ আমি (প্রশ্নকারী) কেবল আইই 8-কেবল ভাঙ্গার দিকে মনোনিবেশ করেছি।
বেনচ করুন

2
সহজ কথায় বলতে গেলে : developer.mozilla.org/en/DOM/window.open -> "strWindowName নতুন উইন্ডোর শিরোনাম নির্দিষ্ট করে না।"
বেনচ করুন

33
আইই-তে আমার এই ত্রুটিটিও ছিল যখন আমার উইন্ডোজের নামটিতে "" আমার-উইন্ডোনেম "এর মতো একটি নাম ছিল" - ", আইই গুণটি আমাকে অবাক করে না।
ম্যাট Palmerlee

1
আপনি এমএসডিএন ডকুমেন্টেশন পৃষ্ঠাটিতে লিঙ্ক করেছেন যা "Oচ্ছিক। উইন্ডোর নাম নির্দিষ্ট করে রেখেছে স্ট্রিং।", এটি আমার কাছে মনে হচ্ছে আপনি উপরে তালিকাভুক্ত যুক্তি ছাড়াও কোনও কীওয়ার্ডে সক্ষম হবেন।
জেমস ম্যাকমাহন

3
এটি
আইই

78

আই উইন্ডো নামের যুক্তি সম্পর্কে পিক। এটি স্পেস, ড্যাশ বা অন্যান্য বিরামচিহ্ন পছন্দ করে না।


3
বা বিন্দু বা ড্যাশ বা অন্য বিরামচিহ্ন
বোটকোডার

ধন্যবাদ এটি সহায়ক
দিলীপ গোধানী

16

আপনি যখন window.openআই-তে ডাকেন , দ্বিতীয় আর্গুমেন্ট (উইন্ডোর নাম) হয় পূর্বনির্ধারিত টার্গেট স্ট্রিংগুলির একটি বা স্ট্রিং হতে হবে, যা জাভাস্ক্রিপ্টে একটি বৈধ পরিচয়কারীর ফর্মযুক্ত।

সুতরাং ফায়ারফক্সে যা কাজ করে: "জব ডিরেক্টরি 9463460", ইন্টারনেট এক্সপ্লোডারে কাজ করে না এবং এর দ্বারা প্রতিস্থাপন করতে হবে: "জব_ডাইরেক্টরি_9463460" উদাহরণস্বরূপ (কোনও ফাঁকা স্থান নেই, বিয়োগ চিহ্ন নয়, কোনও বিন্দু নেই, এটি একটি বৈধ সনাক্তকারী হতে হবে) ।


ধন্যবাদ .. এটি আমাকে সাহায্য করেছে .. আমার উইন্ডোতে আমি (-) ড্যাশ করেছিলাম
delux247

8

সমস্যাটির নামটি হতে পারে, উপরের লিঙ্কে প্রদর্শিত একটিতে ব্যবহারের চেষ্টা করুন, আমি উদ্ধৃত করছি:

ঐচ্ছিক। স্ট্রিং যা উইন্ডোর নাম নির্দিষ্ট করে। এই নামটি কোনও ফর্ম বা অ্যাঙ্কর উপাদানগুলিতে TARGET বৈশিষ্ট্যের মান হিসাবে ব্যবহৃত হয়।

  • _ব্ল্যাঙ্ক সিআরএল একটি নতুন, নামবিহীন উইন্ডোতে লোড করা হয়েছে।
  • _ মিডিয়া ইউআরএলটি মাইক্রোসফ্ট ইন্টারনেট এক্সপ্লোরার in. এর মিডিয়া বারে লোড করা হয় মাইক্রোসফ্ট উইন্ডোজ এক্সপি সার্ভিস প্যাক 2 (এসপি 2) এবং তারপরে। এই বৈশিষ্ট্যটি আর সমর্থিত নয়। ডিফল্টরূপে url একটি নতুন ব্রাউজার উইন্ডো বা ট্যাবে লোড হয়।
  • _ পিতা-মাতার sURL বর্তমান ফ্রেমের প্যারেন্টে লোড হয়েছে। যদি ফ্রেমের কোনও পিতামাতা না থাকে তবে এই মানটি _ _ মান হিসাবে কাজ করে।
  • উইন্ডোজ ইন্টারনেট এক্সপ্লোরার 7 এ অনুসন্ধান নিষ্ক্রিয় করা হয়েছে, তথ্যের জন্য ইন্টারনেট এক্সপ্লোরার 7 এ সুরক্ষা এবং সামঞ্জস্যতা দেখুন। অন্যথায়, এসআরএল 5 বা তার পরে ইন্টারনেট এক্সপ্লোরারে ব্রাউজারের অনুসন্ধান ফলকে খোলা হবে।
  • _ স্বয়ং বর্তমান দস্তাবেজ নির্দিষ্ট SURL দিয়ে প্রতিস্থাপন করা হয়েছে।
  • _ টপ সিআরএল যে কোনও ফ্রেমসেটগুলি লোড হতে পারে তার প্রতিস্থাপন করে। যদি কোনও ফ্রেমসেট সংজ্ঞায়িত না হয় তবে এই মানটি _ _ মান হিসাবে কাজ করে।

যদি অন্য নাম ব্যবহার করে, উইন্ডো.পেন চালিত হবে না ...


5
শেষ বক্তব্যটি সঠিক নয়। আপনি (ক) সেই ফ্রেমে পৃষ্ঠাটি লোড করার জন্য বিদ্যমান ফ্রেমের নাম নির্দিষ্ট করতে পারেন, (খ) সেখানে পৃষ্ঠাটি লোড করার জন্য একটি বিদ্যমান "নামযুক্ত উইন্ডো" এর নাম উল্লেখ করতে পারেন, বা (গ) কোনও নাম নির্দিষ্ট করে না যা ' "নামযুক্ত উইন্ডো" তৈরি করতে টি বিদ্যমান নেই।
বেন ফাঁকা

আমি উইন্ডো.ওপেনের ফলাফলটি একটি চলকটিতে সেট না করা ব্যতীত আমার একই সমস্যা ছিল। নাম ভেরিয়েবলের একটি পৃষ্ঠার শিরোনাম ছিল। এটিকে '_ব্ল্যাঙ্ক' এ পরিবর্তন করা হয়েছে এবং এটি সমস্যার সমাধান করেছে।
ডেরেক হোয়াইট

আমি এটিকে কী সংকুচিত করেছিলাম তা অন্তর্ভুক্ত ছিল না - বা। আমি যখন ইমেজ-ডিসপ্লে -1234 -> ইমেজডিসপ্লে 1234 বিরামচিহ্ন থেকে মুক্তি পেয়েছি তখন সব ঠিকঠাক ছিল।
নৌকোডার

1
বেনের যুক্তি সমর্থন করার জন্য, উইন্ডো.ওপেনের ২ য় পরামিতি সম্পর্কে এমএসডিএন এটি বলে: "স্ট্রিং যা উইন্ডোটির নাম নির্দিষ্ট করে This এবং এখানে টার্গেট অ্যাট্রিবিউট ডক: এমএসডিএন.ইমিক্রোসফটি.এইন.উস / লিবারি / এমএস 3434659(v=vs.85 ) .aspx । এটি স্পষ্টতই বলেছে যে লক্ষ্যটি কেবল এই উত্তরের তালিকাভুক্ত মানগুলি না হয়ে একটি নির্বিচারে স্ট্রিং হতে পারে।
নিহার

5

আসলে একটি নাম ব্যবহার করা যেতে পারে তবে এর স্পেস থাকতে পারে না তাই window.open("../myPage","MyWindows",...)সমস্যা হওয়া উচিত ( উইন্ডো.পেন )।


4

আমি নিম্নলিখিত কোডটি ব্যবহার করার সময় আমি এই সমস্যাটিও পূরণ করি:

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

তবে আমি যখন "উইন্ডো শিরোনাম" এর ফাঁকা স্থানটি মুছব তখন নীচের কোডটি কাজ করছে:

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

এটি খুব সহায়ক ছিল। _ দিয়ে আমার স্পেসগুলি প্রতিস্থাপন করে শেষ হয়েছে। বোকা আইই!
মিঃগ্লাস

2

হাই এর নীচের কোড ব্যবহার করে এটি কাজ করছে ...

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

আগে আমি likeুকলাম

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

মানে মাইক্রোসফ্ট আপনাকে উইন্ডোর নাম প্রবেশ করতে দেয় না এটি window.openফাংশনে ফাঁকা হওয়া উচিত ...

ধন্যবাদ, নিলেশ পাঙ্গুল


এটি ভুল, এটি ফাঁকা হতে পারে তবে ফাঁকা থাকতে হবে না।
জিমি বোস

2

আমার জন্য সমস্যাটি উইন্ডোটির নাম ক্ষেত্রটিতে একটি ড্যাশ "-" নিয়ে ছিল। আমি ড্যাশগুলি সরিয়েছি এবং আইই ত্রুটিযুক্ত হয় না এবং বাস্তবে উইন্ডোটি খোলে।


1

চারটি অবস্থান কীটিকে উপস্থাপন করে, যার মান হিসাবে 'মিথ্যা' রয়েছে? এটি মিথ্যা হওয়া উচিত নয়, (অর্থাত্ উদ্ধৃতি ব্যতীত?) এটা সম্ভব যে আইই এর পূর্ববর্তী সংস্করণগুলি স্ট্রিংকে একটি বুলিয়ানকে জোর করে, কিন্তু নতুনগুলি তা করে না।


আমি উদ্ধৃতিগুলি সরিয়েছি, তবে এটি IE8 এর সমস্যার উত্স নয়।
বেনক করুন

1

উইন্ডো.ওপেন () এ শিরোনাম সেট করার সময় আইই ফাঁকা স্থান সমর্থন করে না এমন ক্ষেত্রে এখানে উত্তরগুলি সঠিক।

আমি আমার উইন্ডো থেকে শিরোনামটি সরিয়েছি op খোলা কল (আপনি নাল বা '' ব্যবহার করতে পারেন), এবং hten পৃষ্ঠাটি খোলার সাথে নিম্নলিখিতটি যুক্ত করেছেন:

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

কোনও উপায়ে আদর্শ নয়, তবে এটি আপনাকে সমস্ত ব্রাউজারে যা খুশি তাই শিরোনাম সেট করতে দেয়।


0

শেষ যুক্তি সরিয়ে চেষ্টা করুন। এগুলি ছাড়াও নিশ্চিত হয়ে নিন যে urlstring, wname এবং wfeatures বিদ্যমান রয়েছে।


0

আমি একই সমস্যাটি আবিষ্কার করেছি এবং প্রথম উত্তরটি পড়ার পরে যে সমস্যাটি উইন্ডো নাম দ্বারা সৃষ্ট বলে মনে করা হয়েছিল, এটি পরিবর্তন করে: প্রথমে '_ব্ল্যাঙ্ক', যা ভাল (উভয়ই সামঞ্জস্যতা এবং নিয়মিত দৃষ্টিভঙ্গি) কাজ করেছিল, তারপরে পূর্বের মান হিসাবে, কেবল বিয়োগ মান স্পেস :) - এছাড়াও কাজ করে। আইএমও, সমস্যা (বা এর অংশ) আইআই নাম হিসাবে একটি সাধারণ স্ট্রিং মান ব্যবহার করতে অক্ষম হওয়ার কারণে ঘটে। আশা করি যে কেউ যদি একই সমস্যায় পড়ে তবে এটি সহায়তা করবে।


0

আপনি যদি এই উইন্ডোতে কোনও ফর্ম পোস্ট করে নতুন উইন্ডো ইত্যাদির নাম ব্যবহার করতে চান, তবে সমাধান, আইই, এফএফ, ক্রোমে কাজ করছে:

  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 নয়, ইত্যাদি) ব্যবহার করার পরেও সমস্যা রয়েছে। প্রথমবার আপনি লিঙ্কটি ক্লিক করলে এটি ঠিক কাজ করে, তবে আপনি যদি আবার এটি ক্লিক করেন (প্রথম প্রবর্তিত উইন্ডোটি এখনও অবধি রয়েছে) আপনি একটি "ত্রুটি: এ জাতীয় কোনও ইন্টারফেস সমর্থিত নয়" স্ক্রিপ্ট ডিবাগ পাবেন receive

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.