簡體   English   中英

javascript Internet Explorer陣列問題

[英]javascript internet explorer array issues

我知道Internet Explorer <9的Javascript數組有問題。 我曾嘗試使用 權宜之計,但我終生無法解決這個問題。

基本上,我有以下代碼(簡化后的代碼):

YUI.add('query-params', function (Y) {
  Y.QueryParams = {
  /**
  Parses our query string and returns an object containing the k/v pairs passed
  in rules

  @method parse
  @param {String} query string to parse
  @param {RegExp} regex rules to compare our query string against
  @return {Object} returns an object containing the k/v pairs that match
  */
  parse: function (qs, rules, params) {
    qs = qs.replace('?', ''); // remove ? from query string
    qs = qs.replace(/\+/g, ' ');
    var matches = rules.exec(qs);
    var defined_matches = Y.Array.filter(matches, function(m) {
      return ((typeof m != 'undefined') || ( m == true ));
    });

// rest of script omitted 

並這樣初始化:

  <script>
  YUI({
    modules: {
      'query-params': {
        fullpath: './parse_search_terms.js'
      }
    },
    onFailure: function (error) {
      console.log(JSON.stringify(error));
    }
  }).use('node', 'console', 'query-params', function (Y) {
    var params = Y.QueryParams.parse(window.location.search, /(\w+)\s(\w+)\s(\w+)|(\w+)\s(\w+)/ig, ["firstName", "lastName", "state"]);
    var url = "url_to_send_to?firstName=" + params.firstName + "&lastName=" + params.lastName + "&state=" + params.state;

    var iframe = Y.Node.create('<iframe></iframe>').setAttrs({
      src: url,
      frameBorder: 'no',
      height: 300,
      width: 800,
      scrolling: 'no'
});
    Y.one('#iframe').appendChild(iframe);
});

當我傳遞“ q = john + smith + ca”和JSON.stringify匹配變量這樣的查詢字符串時,在IE,Firefox和Chrome瀏覽器中得到的內容是:

john smith ca,john,smith,ca,,

當我在數組上調用Y.Array.filter時,Firefox和Chrome做正確的事情:

defined ["john","smith","ca"]

Internet Explorer 8但是:

defined ["john","smith","ca","",""]

因此由於某些原因,IE無法正確過濾我的數組。 我已經嘗試了所有前面提到的陣列墊片和間隙,但似乎沒有任何效果。 我認為自從我使用YUI3以來,這在跨瀏覽器中是相當有效的,但是我很困惑。

有人有想法么? 幫助非常感謝。

事實證明,如果未設置doctype,則IE會進入“怪癖模式”。 在頁面頂部添加“”修復了所有問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM