ফায়ারফক্সে জাভাস্ক্রিপ্ট বিকাশকারী সাধারণ কারণগুলি কী কী? [বন্ধ]


108

আমি কিছু জাভাস্ক্রিপ্ট বর্ধিত পৃষ্ঠাগুলি তৈরি করেছি যা সাম্প্রতিক ফায়ারফক্স এবং সাফারিতে সূক্ষ্মভাবে চলে run আমি ইন্টারনেট এক্সপ্লোরারে চেক করতে মিস করেছি, এবং এখন আমি দেখতে পাচ্ছি যে পৃষ্ঠাগুলি IE 6 এবং 7 (এখনও অবধি) তে কাজ করে না। স্ক্রিপ্টগুলি একরকম কার্যকর করা হয় না, পৃষ্ঠাগুলি দেখায় যে জাভাস্ক্রিপ্টটি সেখানে নেই, যদিও কিছু জাভাস্ক্রিপ্ট কার্যকর করা হয়েছে। আমি ডোম ম্যানিপুলেশন সহ নিজস্ব লাইব্রেরিগুলি ব্যবহার করছি, ওয়াইউআই 2 থেকে আমি ইউইউআই-লোডার এবং এক্সএমএল-এইচটিপি-অনুরোধ ব্যবহার করি এবং এক পৃষ্ঠায় আমি "পিএসপিলোড" ব্যবহার করি যা জ্যাকুয়ের উপর নির্ভর করে।

আমি অফিস এক্সপি থেকে মাইক্রোসফ্ট স্ক্রিপ্ট সম্পাদক ইনস্টল করছি এবং এখন ডিবাগ করব। আমি এখন নির্দিষ্ট পরীক্ষা লিখব।

আইই এর সাধারণ ব্যর্থতা পয়েন্টগুলি কী কী? আমি কোন দিকে চোখ খুলতে পারি।

আমি এই পৃষ্ঠাটি পেয়েছি, যা কিছু পার্থক্য দেখায়। দর্শন: কিরকস্মোড

আপনি কি নিজের অভিজ্ঞতা থেকে প্রথমে কিছু সুনির্দিষ্ট জিনিসগুলির সন্ধান করতে পারেন?

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

সম্পাদনা করুন: এই দুর্দান্ত উত্তরগুলির জন্য আপনাকে ধন্যবাদ!

এরই মধ্যে আমি পুরো কোডটি এমনভাবে গ্রহণ করেছি যাতে এটি ইন্টারনেট এক্সপ্লোরারের সাথেও কাজ করে। আমি jQuery একীভূত করেছি এবং এর উপরে এখন আমার নিজস্ব ক্লাস তৈরি করেছি। এটি আমার প্রাথমিক ভুল ছিল যে আমি প্রথম থেকেই আমার সমস্ত জিনিস jQuery এ তৈরি করি নি। এখন আমার আছে.

এছাড়াও জেএসলিন্ট আমাকে অনেক সাহায্য করেছেন।

এবং বিভিন্ন উত্তর থেকে একক ইস্যু অনেক সাহায্য করেছে।


এখন পর্যন্ত সিএসএস বা স্টাইলিং নিয়ে কোনও সমস্যা নেই, কারণ আমি জানতাম যে পূর্ববর্তী কোডিং থেকে। কেবল জেএস সমস্যাগুলি - কার্লথোরওয়াল্ড
ব্যবহারকারী 89021

1
আমি প্রথমে এখন সমস্ত ফাইলগুলিতে জেএসলিন্ট চালাব, এমন কিছু আছে যা আমি কখনও রূপান্তর করি নি।
ব্যবহারকারী 89021

7
"এটি আমার প্রাথমিক ভুল ছিল যে আমি প্রথম থেকেই আমার সমস্ত জিনিস jQuery এ তৈরি করিনি" " - এটি আপনার ক্রস ব্রাউজারের সমস্ত সমস্যার যাদুতে সমাধান করবে না। JQuery এবং IE এর জন্য স্ট্যাকওভারফ্লো অনুসন্ধান করুন, আপনি প্রচুর সংখ্যক সমস্যা খুঁজে পাবেন। নিজেকে ক্রস ব্রাউজার স্ক্রিপ্টিং শিখতে সেরা তাই যখন jQuery বা এর কয়েক বিলিয়ন স্কেচি প্লাগইন ব্যর্থ হয়, আপনি একটি সত্যিকারের কার্যকারী ক্রস ব্রাউজার সমাধান কার্যকর করতে সক্ষম হবেন এবং এটি কার্যকর এবং কীভাবে তা জানবেন।
দাগ নাবিত

11
+1 উপরে কোনও মন্তব্যে। আপনি জাভাস্ক্রিপ্ট শিখছেন সম্পূর্ণরূপে jQuery এড়ানো থেকে আপনি আরও ভাল - আপনি খুব দ্রুত এবং সহজে কোনও জটিল কাজ করতে চাইলে jQuery অবিশ্বাস্যভাবে কার্যকর তবে আপনি যদি এটি শিখছেন তবে জাভাস্ক্রিপ্ট আসলে কীভাবে বোঝার জটিলতাগুলি থেকে আপনাকে রক্ষা করবে কাজ করে - অনেক বেশি লোক jQuery জানেন বলে মনে হয় তবে জাভাস্ক্রিপ্ট কীভাবে লিখতে হয় সে সম্পর্কে কোনও ধারণা পায়নি। আপনি মূলত jQuery তৈরি না করে ভুল করেননি - আপনার নিজের কোডের চেয়ে এখন আপনার নিজের কোড সম্পর্কে আরও ভাল বোঝাপড়া রয়েছে।
lucideer

উত্তর:


121

আপনি যদি কোনও ত্রুটি / বাদ পড়া ইত্যাদি দেখতে পান তবে এই তালিকাটি আপডেট করতে দ্বিধা বোধ করবেন না

দ্রষ্টব্য: আই 99 নীচের অনেকগুলি সমস্যার সমাধান করে, তাই এর অনেকগুলি কেবল আই 88 এবং নীচে এবং একটি নির্দিষ্ট পরিমাণে আই 99 কে কুইর্কস মোডে প্রযোজ্য। উদাহরণস্বরূপ, IE9 করা SVG সমর্থন <canvas>, <audio>এবং <video>স্থানীয়ভাবে তবে আপনাকে অবশ্যই মান সম্মতি মোড সক্ষম তাদের উপলব্ধ হতে জন্য।


সাধারণ:

  • আংশিকভাবে লোড হওয়া দস্তাবেজগুলির সমস্যা: আপনার জাভা window.onloadস্ক্রিপ্টটি কোনও অনুরূপ ইভেন্টে যুক্ত করা ভাল ধারণা, কারণ আই আংশিক লোড ডকুমেন্টগুলিতে অনেকগুলি ক্রিয়াকলাপ সমর্থন করে না।

  • ভিন্ন বৈশিষ্ট্য : সিএসএসে এটি ফায়ারফক্সের elm.style.styleFloatআই ভার্সে elm.style.cssFloat। ইন <label>ট্যাগ forঅ্যাট্রিবিউটের সাথে অ্যাক্সেস করা হয় elm.htmlForIE তে বনাম elm.forফায়ারফক্স হবে। মনে রাখবেন যে forআইই তে সংরক্ষিত তাই elm['for']সম্ভবত আইআই কে কোনও ব্যতিক্রম বাড়াতে বাধা দেওয়া ভাল ধারণা।


বেস জাভাস্ক্রিপ্ট ভাষা:

  • স্ট্রিংগুলিতে অক্ষরগুলি অ্যাক্সেস করুন : 'string'[0]আইআই তে এটি সমর্থিত নয় কারণ এটি মূল জাভাস্ক্রিপ্টের নির্দিষ্টকরণে নেই। আইরে স্ট্রিং ব্যবহার করার চেয়ে অ্যারে আইটেমগুলি অ্যাক্সেস করা তাত্পর্যপূর্ণভাবে দ্রুত গতিতে ব্যবহার করুন 'string'.charAt(0)বা 'string'.split('')[0]লক্ষ্য করুন charAt(যদিও splitপ্রথমে ডাকা হলেও কিছু প্রাথমিক ওভারহেড থাকে there's )

  • অবজেক্টগুলির সমাপ্তির আগে কমা: যেমন {'foo': 'bar',}আইই তে অনুমোদিত নয়।


উপাদান-নির্দিষ্ট সমস্যা:

  • পথ documentএকটি iframe এর :

    • ফায়ারফক্স এবং IFrame.contentDocument আই 8 +: (আইই সংস্করণ 8 থেকে এটি সমর্থন করা শুরু করে ))
    • অর্থাৎ, IFrame.contentWindow.document
    • ( উভয় ব্রাউজারের মধ্যে IFrame.contentWindowবোঝায় window।)

  • ক্যানভাস: আইই 9 এর আগে আই এর সংস্করণগুলি <canvas>উপাদানটিকে সমর্থন করে না । আইই ভিএমএলকে সমর্থন করে যা একই ধরণের প্রযুক্তি, এবং এক্সপ্লোরারক্যানভাস<canvas> অনেকগুলি ক্রিয়াকলাপের জন্য উপাদানগুলির জন্য একটি স্থানের মোড়ক সরবরাহ করতে পারে । জেনে থাকুন যে মানক কমপ্লায়েন্স মোডে আইই 8 অনেকগুণ ধীর এবং ভিএমএল ব্যবহারের সময় কুইর্কস মোডে থাকার চেয়ে অনেক বেশি বিভ্রান্তি রয়েছে।

  • এসভিজি: আইই 9 স্থানীয়ভাবে এসভিজি সমর্থন করে। আইআই --৮ এসভিজি সমর্থন করতে পারে, তবে কেবলমাত্র জাভাস্ক্রিপ্ট ম্যানিপুলেশন সমর্থন করে এমন কয়েকটি প্লাগইন রয়েছে কেবলমাত্র বাহ্যিক প্লাগইনগুলির সাথে।

  • <audio>এবং <video>: কেবলমাত্র আইই 9 তে সমর্থিত।

  • গতিশীল রেডিও বোতাম তৈরি: আই <8 এর একটি বাগ রয়েছে যা document.createElementযাচাইযোগ্য নয় এমনটি তৈরি রেডিও বোতামগুলিকে তৈরি করে । এছাড়াও দেখুন আপনি কীভাবে জাভাস্ক্রিপ্টে একটি রেডিও বোতাম তৈরি করতে পারেন যা সমস্ত ব্রাউজারে কাজ করে? এই কাছাকাছি পেতে একটি উপায় জন্য।

  • জাভাস্ক্রিপ্ট এমবেডেড <a href>ট্যাগ এবং onbeforeunloadIE তে বিবাদ: যদি সেখানে জাভাস্ক্রিপ্ট এমবেডেড এর hrefএকটি অংশ aট্যাগ (যেমন <a href="javascript: doStuff()">তারপর ইন্টারনেট সবসময় বার্তা থেকে ফিরে দেখাবে onbeforeunloadযদি না onbeforeunloadহ্যান্ডলার পূর্বেই মুছে ফেলা হবে আরও দেখুন। কোনো ট্যাব বন্ধ নিশ্চিত জন্য জিজ্ঞাসা করুন

  • <script>ট্যাগ ইভেন্টের পার্থক্য: onsuccess এবং onerrorআইই সমর্থন করে না এবং একটি আইই-নির্দিষ্ট দ্বারা প্রতিস্থাপিত হয় onreadystatechangeযা ডাউনলোড সফল হয়েছে বা ব্যর্থ হয়েছে তা নির্বিশেষে বরখাস্ত করা হয়েছে। আরও দেখুন জাভাস্ক্রিপ্ট ম্যাডনেস আরও তথ্যের জন্য।


উপাদান আকার / অবস্থান / স্ক্রোলিং এবং মাউস অবস্থান:

  • উপাদানের আকার / অবস্থান প্রাপ্তি : উপাদানগুলির প্রস্থ / উচ্চতা elm.style.pixelHeight/Widthপ্রায়শই তুলনায় আইই তে elm.offsetHeight/Widthহয় তবে আই-তে নির্ভরযোগ্য নয়, বিশেষত কুইর্কস মোডে এবং কখনও কখনও অন্যটির তুলনায় একটি ভাল ফলাফল দেয়।

    elm.offsetTopএবং elm.offsetLeftপ্রায়শই ভুলভাবে রিপোর্ট করা হয়, যার ফলে উপাদানগুলির অবস্থানগুলি ভুল হওয়া সন্ধান করে যার ফলে পপআপ উপাদানগুলি ইত্যাদি বেশ কয়েকটি ক্ষেত্রে কয়েক পিক্সেল বন্ধ থাকে।

    এছাড়াও নোট করুন যে কোনও উপাদান (বা উপাদানটির পিতামাতার) এর মধ্যে যদি একটি displayথাকে noneতবে 0ফায়ারফক্সের মতো ফিরে আসার পরিবর্তে আকার / অবস্থানের বৈশিষ্ট্যগুলি অ্যাক্সেস করার সময় আইই একটি ব্যতিক্রম উত্থাপন করবে ।

  • স্ক্রিনের আকার পান ( স্ক্রিনের দৃশ্যমান অঞ্চলটি পাওয়া):

    • ফায়ারফক্স: window.innerWidth/innerHeight
    • আইই স্ট্যান্ডার্ড মোড: document.documentElement.clientWidth/clientHeight
    • IE quirks মোড: document.body.clientWidth/clientHeight

  • ডকুমেন্ট স্ক্রোল অবস্থান / মাউস অবস্থান : এটি আসলে ডাব্লু 3 সি দ্বারা সংজ্ঞায়িত করা হয়নি তাই ফায়ারফক্সেও এটি মানহীন নয়। জন্য scrollLeft/ scrollTopএর document:

    • ফায়ারফক্স এবং আই কুইর্কস মোডে: document.body.scrollLeft/scrollTop
    • স্ট্যান্ডার্ড মোডে আইই: document.documentElement.scrollLeft/scrollTop
    • দ্রষ্টব্য: কিছু অন্যান্য ব্রাউজার pageXOffset/ pageYOffsetপাশাপাশি ব্যবহার করে ।

      function getDocScrollPos() {
       var x = document.body.scrollLeft ||
               document.documentElement.scrollLeft ||
               window.pageXOffset || 0,
           y = document.body.scrollTop ||
               document.documentElement.scrollTop ||
               window.pageYOffset || 0;
       return [x, y];
      };
      

    জন্য মাউস কার্সার অবস্থানে পেতে, evt.clientXএবং evt.clientYমধ্যে mousemoveঘটনা দস্তাবেজে অবস্থান আপেক্ষিক দেব স্ক্রোল অবস্থানে যোগ ছাড়া তাই পূর্ববর্তী ফাংশন অন্তর্ভূক্ত করতে হবে:

    var mousepos = [0, 0];
    document.onmousemove = function(evt) {
     evt = evt || window.event;
     if (typeof evt.pageX != 'undefined') {
      // Firefox support
      mousepos = [evt.pageX, evt.pageY];
     } else {
      // IE support
      var scrollpos = getDocScrollPos();
      mousepos = [evt.clientX+scrollpos[0], evt.clientY+scrollpos[1]];
     };
    };
    

নির্বাচন / রেঞ্জ:


আইডি দ্বারা উপাদান প্রাপ্ত:

  • document.getElementByIdএছাড়াও উল্লেখ করতে পারেন name(নির্ভর করে যা নথিতে প্রথম নির্ধারণ করা থাকে) তাই এটা যা একই আছে বিভিন্ন উপাদান না আছে সেরা ফর্ম অ্যাট্রিবিউট nameএবং id। এটি সেই দিনগুলিতে ফিরে আসে যখন idডাব্লু 3 সি স্ট্যান্ডার্ড ছিল না। document.all( একটি স্বত্বাধিকারী আই-নির্দিষ্ট সম্পত্তি ) এর তুলনায় উল্লেখযোগ্যভাবে দ্রুত document.getElementById, তবে এটি অন্যান্য সমস্যা যেমন এটি সর্বদা nameআগে অগ্রাধিকার দেয় id। আমি ব্যক্তিগতভাবে এই কোডটি ব্যবহার করি, এটি নিশ্চিত হওয়ার জন্য অতিরিক্ত চেক সহ ফিরে আসছি:

    function getById(id) {
     var e;
     if (document.all) {
      e = document.all[id];
      if (e && e.tagName && e.id === id) {
       return e;
      };
     };
     e = document.getElementById(id);
     if (e && e.id === id) {
      return e;
     } else if (!e) {
      return null;
     } else {
      throw 'Element found by "name" instead of "id": ' + id;
     };
    };
    

কেবলমাত্র অভ্যন্তরীণ এইচটিএমএল পড়ার ক্ষেত্রে সমস্যা:

  • আই ই নেই সমর্থন করে না এর innerHTML সেটিং col, colGroup, frameSet, html, head, style, table, tBody, tFoot, tHead, title, এবং trউপাদান। এখানে একটি ফাংশন যা টেবিল-সম্পর্কিত উপাদানগুলির চারপাশে কাজ করে:

    function setHTML(elm, html) {
     // Try innerHTML first
     try {
      elm.innerHTML = html;
     } catch (exc) {
      function getElm(html) {
       // Create a new element and return the first child
       var e = document.createElement('div');
       e.innerHTML = html;
       return e.firstChild;
      };
      function replace(elms) {
       // Remove the old elements from 'elm'
       while (elm.children.length) {
        elm.removeChild(elm.firstChild);
       }
       // Add the new elements from 'elms' to 'elm'
       for (var x=0; x<elms.children.length; x++) {
        elm.appendChild(elms.children[x]);
       };
      };
      // IE 6-8 don't support setting innerHTML for
      // TABLE, TBODY, TFOOT, THEAD, and TR directly
      var tn = elm.tagName.toLowerCase();
      if (tn === 'table') {
       replace(getElm('<table>' + html + '</table>'));
      } else if (['tbody', 'tfoot', 'thead'].indexOf(tn) != -1) {
       replace(getElm('<table><tbody>' + html + '</tbody></table>').firstChild);
      } else if (tn === 'tr') {
       replace(getElm('<table><tbody><tr>' + html + '</tr></tbody></table>').firstChild.firstChild);
      } else {
       throw exc;
      };
     };
    };
    

    এছাড়াও মনে রাখবেন প্রয়োজন যে অর্থাৎ যোগ করার <tbody>একটি থেকে <table>সংযোজন সামনে <tr>যে গুলি <tbody>উপাদান ব্যবহার করে যখন তৈরি document.createElement, উদাহরণস্বরূপ:

    var table = document.createElement('table');
    var tbody = document.createElement('tbody');
    var tr = document.createElement('tr');
    var td = document.createElement('td');
    table.appendChild(tbody);
    tbody.appendChild(tr);
    tr.appendChild(td);
    // and so on
    

ইভেন্টের পার্থক্য:

  • পথ eventপরিবর্তনশীল: DOM ইভেন্টগুলি IE তে ফাংশন প্রেরণ এবং প্রবেশযোগ্য নেই window.event। ইভেন্টটি পাওয়ার একটি সাধারণ উপায় হল উদাহরণস্বরূপ ব্যবহার করা
    elm.onmouseover = function(evt) {evt = evt||window.event}
    যা পূর্বনির্ধারিত window.eventহলে কোন ডিফল্ট evt

  • মূল ইভেন্টের কোডের পার্থক্য: মূল ইভেন্ট কোডগুলি বুনোভাবে পরিবর্তিত হয়, আপনি যদি কুইরকসমোড বা জাভাস্ক্রিপ্ট ম্যাডনেসের দিকে তাকান তবে এটি আই, সাফারি এবং অপেরা-র সাথে আলাদাভাবে নির্দিষ্ট নয় again

  • মাউস ইভেন্টের পার্থক্য:button আইই এর বৈশিষ্ট্যটি একটি বিট-ফ্ল্যাগ যা একসাথে একাধিক মাউস বোতামগুলিকে মঞ্জুরি দেয়:

    • বাম: 1 ( var isLeft = evt.button & 1)
    • ডান: 2 ( var isRight = evt.button & 2)
    • কেন্দ্র: 4 ( var isCenter = evt.button & 4)

      ডাব্লু 3 সি মডেল (ফায়ারফক্স সমর্থিত) আইই মডেলের তুলনায় কম নমনীয়, কেবলমাত্র একক বোতামটি একবারে বাম হিসাবে 0, ডান হিসাবে 2এবং কেন্দ্র হিসাবে মঞ্জুরিপ্রাপ্ত 1। মনে রাখবেন, পিটার-পল কোচ যেমন উল্লেখ করেছেন , এটি খুব পাল্টা-স্বজ্ঞাত, 0সাধারণত এর অর্থ 'কোনও বোতাম নেই'।

      offsetXএবং offsetYহয় সমস্যাযুক্ত এবং এটি সম্ভবত তাদের IE তে এড়াতে রাখা সেরা উপায়। পেতে আরো একটি নির্ভরযোগ্য উপায় offsetXএবং offsetYIE তে হবে অবস্থানে পেতে অপেক্ষাকৃত স্থান উপাদান এবং এ থেকেই বিয়োগ clientXএবং clientY

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

  • ইভেন্ট হ্যান্ডলিং মডেলটির পার্থক্য: মালিকানাধীন আইই মডেল এবং ফায়ারফক্স মডেল উভয়ই নীচের দিক থেকে ইভেন্টগুলি পরিচালনা করতে সহায়তা করে, উদাহরণস্বরূপ যদি উভয় উপাদানগুলির মধ্যে <div><span></span></div>ইভেন্টগুলি থাকে span তবেdiv তারা যে ক্রম হয় তার পরিবর্তে তত্পর হয়ে উঠবে আবদ্ধ যদি একটি traditionalতিহ্যগত যেমন elm.onclick = function(evt) {}ব্যবহার করা হয়।

    "ক্যাপচার" ইভেন্টগুলি সাধারণত ফায়ারফক্স ইত্যাদিতে সমর্থিত হয় যা divতত্কালীন spanঘটনাগুলিকে শীর্ষ ডাউন ক্রমে ট্রিগার করে । আইই এর কাছে রয়েছে elm.setCapture()এবং অন্যান্য ইভেন্টগুলি প্রক্রিয়া করার আগে elm.releaseCapture()ডকুমেন্ট থেকে মৌলটির দিকে মাউসের ইভেন্টগুলি পুনঃনির্দেশ করার জন্য ( elmএই ক্ষেত্রে), তবে তাদের বেশ কয়েকটি পারফরম্যান্স এবং অন্যান্য সমস্যা রয়েছে তাই সম্ভবত এড়ানো উচিত।

    • ফায়ারফক্স:

      সংযুক্তি : elm.addEventListener(type, listener, useCapture [true/false])
      বিযুক্তি : elm.removeEventListener(type, listener, useCapture)
      ( typeযেমন 'mouseover'ছাড়াই on)

    • আইই: আইনে একটি উপাদানের উপর প্রদত্ত টাইপের কেবলমাত্র একটি ইভেন্ট যুক্ত করা যায় - একই ধরণের একাধিক ইভেন্ট যুক্ত হলে একটি ব্যতিক্রম উত্থাপিত হয়। এছাড়াও লক্ষ করুন যে ইভেন্ট ফাংশনগুলিতে আবদ্ধ উপাদানটির পরিবর্তে thisরেফারেন্সগুলি বোঝায় window(তাই কম কার্যকর):

      সংযুক্তি : elm.attachEvent(sEvent, fpNotify)
      বিচ্ছিন্ন : elm.detachEvent(sEvent, fpNotify)
      ( sEventযেমন 'onmouseover':)

  • ইভেন্ট বৈশিষ্ট্য পার্থক্য:

    • অন্য কোনও শোনার ফাংশন দ্বারা ইভেন্টগুলি প্রক্রিয়াজাতকরণ বন্ধ করুন :

      ফায়ারফক্স: evt.stopPropagation()
      আইই: evt.cancelBubble = true

    • উদাহরণস্বরূপ অক্ষরগুলি সন্নিবেশ করা বা চেকবক্সগুলি চেক করা বন্ধ করা থেকে গুরুত্বপূর্ণ ইভেন্টগুলি বন্ধ করুন:

      ফায়ারফক্স: evt.preventDefault()
      অর্থাৎ, evt.returnValue = false
      নোট: শুধু ফিরে falseমধ্যে keydown, keypress, mousedown, mouseup, clickএবং resetডিফল্ট প্রতিরোধ করবে।

    • ইভেন্টটি ট্রিগারকারী উপাদানটি পান:

      ফায়ারফক্স: evt.target
      আইই: evt.srcElement

    • উপাদানটি পাওয়া মাউস কার্সার থেকে সরে গেছে: অন্যথায় অন্যথায়, যদি ফায়ারফক্সে থাকে evt.fromElementIEevt.targetonmouseoutevt.relatedTarget

    • উপাদানটি মাউস কার্সারকে সরানো হয়েছে: অন্যথায় অন্যথায়, যদি ফায়ারফক্সে থাকে evt.toElementIEevt.relatedTargetonmouseoutevt.target

    • দ্রষ্টব্য: evt.currentTarget (ইভেন্টটি যে উপাদানটির সাথে আবদ্ধ ছিল) এর IE তে কোনও সমতুল্য নেই।


12
খুব, খুব, খুব সুন্দর তালিকা! যারা অবদান রেখেছেন তাদের সবাইকে ধন্যবাদ :)
cwap করুন

26

আপনার কোডে এই জাতীয় বা অনুরূপ মত কমাগুলির জন্যও পরীক্ষা করুন

var o={
'name1':'value1',
'name2':'value2',
} 

শেষ কমা (নিম্নলিখিত মান 2) ফায়ারফক্স সহ্য করবে, তবে IE নয়


1
বেশিরভাগ ভাল সম্পাদকদের এটিকে ধরা উচিত
সানজেএ

1
+1, আমার এটি প্রায়শই ছিল।
ডেভিড ভি।

1
আমি যদি পারতাম তবে আপনাকে 10 প্রদান করব - আমার কাছে সমস্ত সময় এই হয়।
জোশ

ওহ এবং @ সানজেএর মন্তব্যে যোগ করার জন্য: আমি সম্প্রতি নেটবিনে স্যুইচ করেছি যা এটি ধরা দেয়।
জোশ

আমি প্রথমবারের মতো কিছু জেএস কাজ করেছি এর জন্য আমি এত ঘন্টা হারিয়েছি। এখন প্রথম জিনিসটি আমি যাচাই করি! অভিশাপ কপিরাইট টেক্সটমেট বিস্তৃতি চারপাশে কমা ছেড়ে।
Agos

12

আপনি যদি আপনার পোস্টটি ট্যাগ করার সাথে সাথে jQuery বা YUI ব্যবহার করতে যান, আপনার ব্রাউজারগুলির মধ্যে ন্যূনতম পার্থক্য থাকা উচিত ... আপনার জন্য এই ক্রস-ব্রাউজারের পার্থক্যগুলির যত্ন নিতে ফ্রেমওয়ার্কগুলি এটাই।

উদাহরণস্বরূপ, quirksmode DOM traversal পৃষ্ঠাটি দেখুন , এটি অনুসারে আইই বেশিরভাগ জিনিসকে সমর্থন করে না ... সত্য হলেও, ফ্রেমওয়ার্কগুলি উদাহরণস্বরূপ আইই সমর্থন করে না elem.childElementCount, তবে জিকুয়েরিতে : এই মানটি অর্জনের জন্য $(elem).children().size()কাজ করে, প্রতিটি ব্রাউজারে। আপনি কমপক্ষে স্ক্রিপ্ট সহ ব্রাউজারগুলিতে 99% অসমর্থিত কেসগুলি হ্যান্ডেল করার জন্য লাইব্রেরিতে কিছু পেয়ে যাবেন ... সিএসএস সহ আপনাকে গ্রন্থাগারের জন্য প্লাগইনগুলিতে যেতে হতে পারে, এর একটি সাধারণ উদাহরণ গোলাকার কোণগুলি পাওয়া is আইই তে কাজ করছে ... যেহেতু এটির জন্য কোনও CSS সমর্থন নেই।

তবে আপনি যদি সরাসরি কাজগুলি শুরু করেন, যেমন document.XXX(thing), তবে আপনি লাইব্রেরিতে নেই, আপনি সরাসরি জাভাস্ক্রিপ্ট করছেন (এটি সমস্ত জাভাস্ক্রিপ্ট, তবে আপনি পয়েন্টটি পেয়েছেন :), এবং এটি কীভাবে নির্ভর করে তা সমস্যা সৃষ্টি করতে পারে বা নাও পারে আইআই দল মাতাল ছিল সেই নির্দিষ্ট কার্যটি প্রয়োগ করার সময়।

আই ই আপনি আরো অধিকার কাঁচা জাভাস্ক্রিপ্ট সমস্যা, বন্ধ অ্যানিমেশন কয়েক পিক্সেল এবং জিনিস যে সাজানোর চেয়ে আসছে আউট styling উপর ব্যর্থ, সম্ভাবনা বেশি করছি অনেক অবশ্যই IE6 আরও-তাই।


আমি এখন আরও ভাল বুঝতে। হ্যাঁ, আমি সরাসরি এই জাতীয় জিনিসগুলিও করেছি। কার্লথোরওয়াল্ড
user89021

1
আপনি যদি নেটবিন্সের মতো আইডিই ব্যবহার করছেন তবে আপনি আপনার জাভাস্ক্রিপ্টের জন্য লক্ষ্য ব্রাউজারগুলি সেট করতে পারেন এবং যখন আপনি এমন কিছু করেন যা সমর্থিত বলে মনে হয় না তখন এটি আপনাকে সতর্ক করে দিয়ে সহায়তা করবে।
সানজেএ

10

getElementbyID এছাড়াও আইই তে নামের বৈশিষ্ট্যের সাথে মেলে তবে অন্য ব্রাউজারগুলিতে নয় এবং আইই প্রথমে যেটি খুঁজে পায় তা নির্বাচন করবে।

উদাহরণ:

<script>
 var foo = document.getElementById('bar');
</script>

....
<input name="bar" type="text" />  //IE will get this element
<span id="bar"> Hello, World! </span>  //FF,Safari,Chrome will get this element

3
অভদ্র হওয়ার জন্য দুঃখিত তবে IE সত্যিই কুৎসিত
ব্যবহারকারী 89021

12
document.getElementByIdOrNameIGuessWhateverMan (ID);
জুলিয়ানআর

5

এখানে প্রচুর জিনিস রয়েছে, তবে একটি ফাঁদে আমি যেটি ব্যবহার করতাম তা হ'ল অনেক ব্রাউজারগুলি উদ্ধৃত নাম ছাড়াই জেএসএন গ্রহণ করে, যখন ie এবং ie নেই।

{ name: "Jakob" } // will often work, but not in ie6/ie7
{ "name": "Jakob" } // Better!

সম্পাদনা : স্পষ্ট করার জন্য, এটি কেবল তখনই ইস্যু যখন সত্যিকারের জেএসএন প্রয়োজন হয়, কোনও বস্তুর আক্ষরিক বিপরীতে। জেএসএন হ'ল আক্ষরিক সিনট্যাক্সের একটি উপসেট এবং এটি ডেটা এক্সচেঞ্জের ফর্ম্যাট (এক্সএমএলের মতো) হিসাবে বোঝানো হয় যার কারণে এটি পিকর হিসাবে ডিজাইন করা হয়েছে।


2
মনে রাখবেন যে এটি প্রসঙ্গে নির্ভর করে, কোনও বস্তু আক্ষরিক ঠিক আছে, জেএসওন নেই ... তবে উদাহরণস্বরূপ jQuery তাদের সর্বশেষ প্রকাশে অবৈধ জেএসনকে অনুমতি দেয় না।
নিক Craver

আমার ডাউনভোট নয় ... তবে আপনার এটি অন্যদের জন্য স্পষ্ট করা উচিত, তারপরে আমার কাছ থেকে +1 করুন।
নিক ক্র্যাভার

5

জাভাস্ক্রিপ্ট সমর্থন পার্থক্য

আই জা জাভাস্ক্রিপ্টে যুক্ত হওয়া এক্সটেনশানগুলি 1.5 এর পরে সমর্থন করে না।

1.6 এ নতুন

  • এরে পদ্ধতি - indexOf(), lastIndexOf(), every(), filter(), forEach(), map(),some()
  • for each ... in - সম্পত্তি নামের পরিবর্তে মানগুলি পুনরাবৃত্তি করে।

1.7 এ নতুন

1.8 এ নতুন

  • অ্যারে পদ্ধতি - reduce(),reduceRight()
  • কার্যকারিতা সংজ্ঞায়নের জন্য শর্টকাটগুলি।

এর মধ্যে কয়েকটি জিনিসের জন্য আপনাকে জাভাস্ক্রিপ্টের সংস্করণ নম্বর নির্দিষ্ট করে চলতে হবে (যা আইআইয়ের অধীনে ভেঙে যাবে), তবে কিছু কিছু [1,2,3].indexOf(2)এটিকে বড় চুক্তি বলে মনে হচ্ছে না, যতক্ষণ না আপনি এটিকে চালানোর চেষ্টা করেন না


1
আপনি এখানে যে জাভাস্ক্রিপ্টের কথা বলছেন সেটি হ'ল মোজিলার জাভাস্ক্রিপ্ট (টিএম), আরও সাধারণ দিক থেকে জাভাস্ক্রিপ্ট নয়। সমস্ত ECMAScript প্রয়োগকরণ / জাভাস্ক্রিপ্ট ইঞ্জিনগুলি (এমএস জেএসক্রিপ্ট এই ক্ষেত্রে) মোজিলার জাভাস্ক্রিপ্ট (টিএম) অনুসরণ করার আশা করা উচিত নয়। ECMAScript মানক, জাভাস্ক্রিপ্ট (টিএম) নয়, এবং জাভাস্ক্রিপ্ট (টিএম) জাভাস্ক্রিপ্ট নয়। আমি আশা করি যে এটি তৈরি হয়েছে।
দাগ নাবিত

আমাকে বোঝায়, তবে জাভাস্ক্রিপ্ট এবং
জেএসক্রিপ্টের

আপনি যখন বলছেন যে "আই.আই. 1.5. এর পরে জাভাস্ক্রিপ্টে যুক্ত হওয়া এক্সটেনশনগুলিকে সমর্থন করে না (বেশিরভাগ)" ", তখন মনে হয় আপনি মোজিলার জাভাস্ক্রিপ্ট (টিএম) এমন একটি মান যা আইই মেনে চলতে হবে, অবশ্যই যখন তা না হয়। আপনি কমপক্ষে মোজিলার জাভাস্ক্রিপ্ট বা অনুরূপ বলতে পারেন ... অন্য ব্রাউজারটি মজিলার সমস্ত এক্সটেনশানগুলিকে ECMAScript যেমন ডেস্ট্রাকচারিং অ্যাসাইনমেন্ট ইত্যাদির সমর্থন করে না, ইত্যাদি 'সবচেয়ে' javascriptএবং (নির্দিষ্ট প্রয়োগ) এর JScriptমধ্যে পার্থক্য সম্পর্কে ছিল, Mozilla JavaScript(TM)এবং এর মধ্যে পার্থক্য নয় differences JScript। আইএস কোথায় ES থেকে বিচ্যুত হয় তা দেখানো আরও ভাল।
দাগ নাবিত

3

আইআই তে জাভাস্ক্রিপ্ট এবং আধুনিক ব্রাউজারগুলিতে জাভাস্ক্রিপ্ট (প্রাক্তন, ফায়ারফক্স) এর মধ্যে প্রধান পার্থক্যগুলি সিএসএস / (এক্স) এইচটিএমএল ক্রস ব্রাউজারের পার্থক্যের পিছনে একই কারণে দায়ী করা যেতে পারে। দিনটিতে কোনও ডি-ফ্যাক্টো স্ট্যান্ডার্ড ছিল না; আইই / নেটস্কেপ / অপেরা বেশিরভাগ চশমা বাস্তবায়ন করে, কিছু কিছু বাদ দিয়ে পাশাপাশি একে অপরের থেকে সুবিধা অর্জনের জন্য মালিকানাধীন চশমা তৈরি করে a আমি দৈর্ঘ্যে যেতে পারলাম, তবে আইই 8 এর মুক্তির জন্য এগিয়ে যেতে পারি: কয়েক বছর ধরে জাভাস্ক্রিপ্ট এড়ানো / উপহাস করা হয়েছিল, এবং এফএফ এবং ওয়েবকমের অবজ্ঞার উত্থানের সাথে, আইই বেশিরভাগই আইএস 6 থেকে তাদের সিএসএসের অগ্রযাত্রায় মনোনিবেশ করতে বেছে নিয়েছে। এবং মূলত বাম DOM সমর্থন পিছনে। আইই 8 এর ডোম সমর্থনটি আইই 6 এরও হতে পারে যা 2001 সালে প্রবর্তিত হয়েছিল .... সুতরাং আইই এর ডোম সমর্থনটি আধুনিক ব্রাউজারগুলির থেকে প্রায় এক দশক পিছনে। যদি আপনার কোনও লেআউট ইঞ্জিনের সাথে জাভাস্ক্রিপ্টের তাত্পর্য দেখা দেয় তবে আপনার পক্ষে সেরা বাজিটি হ'ল আমরা সিএসএস সমস্যার সাথে একইভাবে আক্রমণ করা; সেই ব্রাউজারটিকে লক্ষ্য করে। ব্রাউজার স্নিফিং ব্যবহার করবেন না, আপনার ব্রাউজারটি স্নিগ্ধ করতে বৈশিষ্ট্য সনাক্তকরণ ব্যবহার করুন / এটি ডোম সাপোর্টের স্তর।

জেএসক্রিপ্ট ইসির স্ক্রিপ্ট আইইয়ের নিজস্ব বাস্তবায়ন নয়; জেএসক্রিপ্ট নেটস্কেপের জাভাস্ক্রিপ্টের আইই এর উত্তর ছিল, যা উভয়ই ইসমাস্ক্রিপ্টের আগেই অস্তিত্ব নিয়ে এসেছিল।

স্ক্রিপ্ট উপাদানটিতে টাইপ অ্যাট্রিবিউট হিসাবে, টাইপ = "পাঠ্য / জাভাস্ক্রিপ্ট" হ'ল ডিফল্ট মান (কমপক্ষে এইচটিএমএল 5), সুতরাং আপনার স্ক্রিপ্ট জাভাস্ক্রিপ্ট না হলে আপনার কোনও ধরণের বৈশিষ্ট্যের প্রয়োজন হবে না।

যতক্ষণ না IE অন্তর্নিহিত এইচটিএমএল সমর্থন করে না ... অন্তর্নিহিত এইচটিএমএল আইই আবিষ্কার করেছিলেন এবং এখনও এটি কোনও ডোম মানক নয়। অন্যান্য ব্রাউজারগুলি এটিকে গ্রহণ করেছে কারণ এটি কার্যকর, কারণ আপনি এটি ক্রস ব্রাউজারটি ব্যবহার করতে পারেন। যতদূর ডায়নামিকভাবে টেবিলগুলি পরিবর্তন করা যায়, এমএসডিএন বলছে "সারণির দ্বারা প্রয়োজনীয় নির্দিষ্ট কাঠামোর কারণে, সারণী এবং টিআর অবজেক্টের অভ্যন্তরীণ পাঠ্য এবং অন্তর্নিহিত এইচটিএমএল বৈশিষ্ট্যগুলি কেবল পঠনযোগ্য।" প্রাথমিকভাবে আমি জানি না যে এর কতটা সত্য ছিল, তবে স্পষ্টতই আধুনিক ব্রাউজারগুলি টেবিল-বিন্যাসের জটিলতাগুলি মোকাবেলা করার সময় এটি আবিষ্কার করেছে।

আমি জাভাস্ক্রিপ্ট জেরেমি কিথের ডিওএম স্ক্রিপ্টিং ডগলাস ক্রকফোর্ডের জাভাস্ক্রিপ্টে পিপিকে পড়ার পরামর্শ দিচ্ছি : জাভাস্ক্রিপ্টের উপর শক্তিশালী উপলব্ধি পেতে গুড পার্টস এবং ক্রিশ্চান হেলম্যানের বিজনেস জাভাস্ক্রিপ্ট ডিওএম স্ক্রিপ্টিং এবং অ্যাজাক্স সহ

ফ্রেমওয়ার্কস / লাইব্রেরিগুলি যতটা উদ্বিগ্ন, যদি আপনার এখনও জাভাস্ক্রিপ্টে দৃ strong় উপলব্ধি না থাকে তবে আপনার সেগুলি এড়ানো উচিত। 2 বছর আগে আমি jQuery ফাঁদে পড়েছিলাম, এবং আমি দুর্দান্ত কীর্তিগুলি সরাতে সক্ষম হয়েছি, জাভাস্ক্রিপ্টকে সঠিকভাবে কোডিংয়ের বিষয়ে আমি কখনই কোন খারাপ জিনিস শিখিনি। অন্ধকারে, jQuery একটি দুষ্ট ভয়ঙ্কর DOM টুলকিট, কিন্তু সঠিক বন্ধকরণ, প্রোটোটাইপিকাল উত্তরাধিকার ইত্যাদি শিখতে আমার ব্যর্থতা, কেবল আমার ব্যক্তিগত জ্ঞানকে ফিরিয়ে দেয়নি, আমার কাজটি বিশাল পারফরম্যান্স হিট নিতে শুরু করেছে কারণ আমার কোনও ক্লু ছিল না wtf ছিল t

জাভাস্ক্রিপ্ট ব্রাউজারের ভাষা; আপনি যদি ক্লায়েন্ট-সাইড / ফ্রন্ট-এন্ড ইঞ্জিনিয়ার হন তবে জাভা স্ক্রিপ্টটি কমান্ড করা এটি সর্বাধিক গুরুত্বপূর্ণ of নোড.জেএস পুরো জাভাস্ক্রিপ্ট নিয়ে আসছে সম্পূর্ণ কাত হয়ে, আমি দেখছি এর বিকাশে প্রতিদিন নেওয়া প্রচুর পদক্ষেপ; সার্ভার-সাইড জাভাস্ক্রিপ্ট খুব নিকট ভবিষ্যতে একটি মান হবে। আমি জাভাস্ক্রিপ্টটি এখন কতটা গুরুত্বপূর্ণ এবং কী হবে তা আরও জোর দেওয়ার জন্য আমি এটি উল্লেখ করছি।

জাভাস্ক্রিপ্ট রেলের চেয়ে আরও তরঙ্গ তৈরি করতে চলেছে।

শুভ স্ক্রিপ্টিং!


2
দুর্দান্ত উত্তর, যদিও আমি ব্রাউজারটি স্নিগ্ধ করতে বৈশিষ্ট্য সনাক্তকরণ ব্যবহারের সাথে একমত নই; এই বৈশিষ্ট্যগুলির সমর্থনের জন্য পরীক্ষার জন্য কেবল বৈশিষ্ট্য সনাক্তকরণ ব্যবহার করুন । এছাড়াও বৈশিষ্ট্য সনাক্তকরণের উদাহরণগুলি দেখুন ব্রাউজার সনাক্তকরণ নয়
মার্সেল করপেল

Meh। আমি আপনার মতবিরোধের সাথে সম্পূর্ণ একমত এটি ধরার জন্য ধন্যবাদ আমি এখনও একটি জাভাস্ক্রিপ্ট n00b, কিন্তু আমার খেলায় কোন লজ্জা নেই। "বৈশিষ্ট্য ভিত্তিক ব্রাউজার সনাক্তকরণ একটি খুব খারাপ অনুশীলন যা কোনও মূল্যে এড়ানো উচিত Straight
অ্যালবার্ট

2

কিছু নেটিভ অবজেক্টগুলি কেবলমাত্র এমনটি না দেখে কেবল পঠনযোগ্য হয় (আপনি তাদের কাছে এটি লিখতে পারেন তবে এর কোনও প্রভাব নেই)। উদাহরণস্বরূপ, একটি সাধারণ উন্নত জাভাস্ক্রিপ্ট Elementবাচ্চাদের নোড যুক্ত করার চেয়ে আরও বেশি কিছু করার জন্য এলিমেন্ট.প্রোটোটাইপ.এপেন্ডচিল্ড () পরিবর্তন করে সিস্টেমের পদ্ধতিগুলিকে ওভাররাইড করে অবজেক্টটি প্রসারিত করার উপর ভিত্তি করে বলা হয় - পিতামাতার ডেটা দিয়ে এটি আরম্ভ করুন। এটি আই 6 এ নিঃশব্দে ব্যর্থ হবে - আসল পদ্ধতিটি নতুনটির পরিবর্তে নতুন অবজেক্টে ডাকা হবে।

কিছু ব্রাউজার (আমি এখন কোনটি মনে করি না) এইচটিএমএল ট্যাগের মধ্যে নতুন লাইনগুলি পাঠ্য নোড হিসাবে বিবেচনা করে, অন্যরা তা করে না। তাই চাইল্ডনোডস (এন), নেক্সটসিলিং (), ফার্স্টচিল্ড () এবং এর মতো খুব আলাদা আচরণ করবে।


2

অ্যারে এবং অবজেক্ট লিটারে ট্রেলিং কমাগুলি সমস্যা হিসাবে ব্যবহৃত হয়েছিল, সম্প্রতি চেক করে নি (অর্থ IE8):

var a = [ 1, 2, 3, ];
var o = { a:1, b:2, c:3, };

এই জাতীয় কাঠামো সার্ভারের পাশ তৈরি করার সময় এটি কিছু অতিরিক্ত কোড তৈরি করতে পারে।


2

আমি আজ সকালেই একটি সন্ধান পেয়েছি, একজন সহকর্মী স্ক্রিপ্ট ট্যাগটি সেট করেছিলেন: <script type="application/javascript">কারণ তার আদর্শ স্বতঃপূরণ "পাঠ / জাভাস্ক্রিপ্ট" এর আগে ছিল

তবে, দেখা যাচ্ছে যে আপনি যদি "অ্যাপ্লিকেশন / জাভাস্ক্রিপ্ট" ব্যবহার করেন তবে কেবল "স্ক্রিপ্ট / জাভাস্ক্রিপ্ট" ব্যবহার করতে হবে


জাভাস্ক্রিপ্ট সমস্ত ব্রাউজারে ডিফল্ট, তাই কেবল ব্যবহার করুন<script>
লরি

2

ইন্টারনেট এক্সপ্লোরারের সাথে আমি অন্যদিনেই একটি বিজোড় স্পর্শ পেয়েছি। আমি YUI ব্যবহার করছিলাম, এবং অভ্যন্তরীণ এইচটিএমএল সেট করে একটি টেবিলের বডি () এর সামগ্রীগুলি প্রতিস্থাপন করছিলাম

Y.one('#elementId').set('innerHTML', '<tr><td>Column 1</td></tr>');

এটি IE বাদে সমস্ত ব্রাউজারে কাজ করবে। আমি অবশেষে আবিষ্কার করেছি যে আপনি IE এ সারণির অভ্যন্তরীণ এইচটিএমএল প্রতিস্থাপন করতে পারবেন না। আমাকে YUI ব্যবহার করে একটি নোড তৈরি করতে হবে এবং তারপরে সেই নোড যুক্ত করতে হবে।

var myNode = Y.node.create('<tr><td>Column 1</td></tr>');
Y.one('#elementId').append(myNode);

এটি একটি মজা ছিল খুঁজে বের করতে!


1
আমার একটি অনুভূতি আছে যে আপনি এটি <tbody>ট্যাগ দিয়ে মোড়ানো প্রয়োজন ।
ক্যাসি চু

মূল কোডে, এটি আসলে একটি <tbody> ট্যাগে মোড়ানো। এটি এখনও আমার মনকে উড়িয়ে দেয় যে আইআই এটি পছন্দ করে না। আমার মনে আছে এটি মাইক্রোসফ্টের অফিসিয়াল ডক্সে পড়েছি, তবে আমি এখন লিঙ্কটি খুঁজে পাচ্ছি না। দুঃখিত!
জাস্টিন

1

অতিরিক্ত কমা এবং অনুপস্থিত কমাগুলি যখন এফএফ-তে সাবলীলভাবে কাজ করে তখন আইআই-তে সাধারণত সমস্যা হত।


1

আইই অনুপস্থিত সম্পর্কে খুব কঠোর ";" সাধারণত এটি হয়।


আমি এখন jsLinting করার সময় আমি এর মধ্যে অনেকগুলি খুঁজে পাই। একটি গুরুত্বপূর্ণ বিষয় বলে মনে হচ্ছে।
ব্যবহারকারী 89021

1

এটির মূল্যের জন্য আমি <আই 9 এ এই কদর্য সমস্যাটি জুড়ে এসেছি

বলুন আপনার মতো কিছু এইচটিএমএল রয়েছে:

<table><tr><td>some content...</td></tr></table>

এবং কোনও কারণে (আমার একটি ভাল ছিল) আপনাকে শেষের টিআর এর আগে টেবিলের সমস্ত এইচটিএমএল পুনরুদ্ধার করতে হবে আপনি এ জাতীয় কিছু চেষ্টা করতে পারেন:

var tableHtml = document.getElementById('thetable').innerHTML;
var fragment = tableHtml.substring(0, tableHtml.lastIndexOf('</tr>'));

<আই 9 এখানে (-1) কিছুই ফিরিয়ে দেবে না কারণ টেবিলটি এইচটিএমএল ভেরিয়েবলে সমস্ত এইচটিএমএল ট্যাগ আপার-কেসড এবং লাস্ট ইন্ডেক্সঅফ রয়েছে সংবেদনশীল। এটির সম্পর্কে জানতে আমাকে সর্বশেষ ইনডেক্সফের আগে একটি টাউনলওয়ারকেসে () ফেলে দিতে হয়েছিল।


0

IE কোনও আধুনিক ব্রাউজার নয় এবং কেবলমাত্র ECMAScript অনুসরণ করুন।


0

আপনি jQuery উল্লেখ করেছেন যার সাথে আমি কম পরিচিত তবে সাধারণ রেফারেন্সের জন্য, এবং বিশেষত প্রোটোটাইপের সাথে আইয়িতে সংরক্ষিত শব্দ / পদ্ধতির নামগুলি লক্ষ্য রাখা উচিত। আমি জানি যে প্রায়শই আমাকে কী হয় তা হ'ল:

someElement.appendChild(new Element('label',{ **for**: someInput.id }).update( someLabelText );

(নতুন এলিমেন্ট (ট্যাগনাম, প্রপার্টি হ্যাশ) হ'ল প্রোটাইটিপে নতুন উপাদান তৈরি হয়)। আই-তে for:অবশ্যই থাকতে হবে 'for':, কারণ forএটি একটি সংরক্ষিত শব্দ। যা সম্পূর্ণ জ্ঞান করে - তবে ফায়ারফক্স এটি সহ্য করবে।

আরেকটি উদাহরণ:

someElement.wrap('div').addClassName('someClass')

( wrapপ্রোটোটাইপ পদ্ধতিটি একটি উপাদানকে অন্যটিতে জড়ায় ) - টেক্সারিয়াসে আইই-তে wrapএকটি সম্পত্তি, এবং Element.wrap()পদ্ধতিযুক্ত সংস্করণের পরিবর্তে অবশ্যই ব্যবহার করা উচিত

এগুলি দুটি উদাহরণ যা আমার অভিজ্ঞতা থেকে মনে আসে। এগুলি প্রোটোটাইপের উপর ভিত্তি করে রয়েছে তবে মূল সমস্যাটি হ'ল নয়: যে কোনও পদ্ধতি / লেবেল / শনাক্তকারী যা আইই সংরক্ষিত শব্দ বিবেচনা করে তবে ফায়ারফক্স বা সাফারি সহ্য করবে।


0

আসল বিষয়টি হ'ল আইই জাভাস্ক্রিপ্ট সমর্থন করে না ... এটি ECMAScript এর নিজস্ব প্রয়োগকে সমর্থন করে: জেএসক্রিপ্ট ... যা বিভিন্ন ধরণের ...


0

console.log()ফায়ারফক্স ত্রুটি কনসোলে আউটপুট ত্রুটির জন্য ব্যবহার করা আপনার স্ক্রিপ্টগুলি আইইতে ব্যর্থ হতে পারে। আপনি যখন পরীক্ষায় আসেন তখন সেগুলি বের করে দেওয়ার বিষয়টি মনে রাখবেন।


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