2012-03-29 9 views
3

誰でも知っていますか?jquery-ui-draggable-collisionはIEをサポートしていますか?jQuery UI draggable collision - IEが動作しない

私はそれに付属している1例(jqueryの-UI-ドラッグ衝突防止-example.htmlを)しようとしている、と私は、IE8に次のエラーを取得しています:

「オブジェクト」はdoesnのファイルjqueryの-UI-ドラッグ衝突-1.0.1.jsライン219

function jqList2CenterGravity(jqList, dx, dy) 
{ 
219: return centerGravity(jqList.toArray().map(function(e,i,a){ return jq2Coords($(e),dx,dy); })); 
} 

にトンサポートプロパティまたはメソッド」マップ()関数は、IE8でサポートされていないようです。

最新のjquery-1.7.2とjquery-ui-1.8.18で実行しようとしましたが、同じエラーが表示されます。

例は最後に、私の周りの仕事を見つけ、IE8は、Arrayオブジェクト、関数マップ()のためのいくつかの機能が欠落している、で使用されるものである
+0

jquery UIサイトでデモが見つかりませんでした。私にURLを送ってください。 –

+0

yup申し訳ありませんが、これに気付かなかった。 sourceforgeでモジュールを修正します。はい、それは<9ものです。 ugh。 h8 ms。 – eruciform

答えて

1

クローム、FirefoxとSafariの

上で魔法のように実行もちろんの

jqueryの衝突、私は私のArrayオブジェクトにマップ機能を追加したものをので、私はDDR-ECMA5のJavaScriptライブラリーから、このコードを土気:副作用があり

 var __isCallable = (function(){ 
     var __sortCase = (function(){ 
       try { 
        [].sort('abc'); 
        return false; 
       } catch(ex) { 
        return true; 
       } 
      })(); 

     return function(obj){ 
      if(typeof obj === 'function') 
       return true; 
      if(typeof obj !== 'object') 
       return false; 
      if(obj instanceof Function || obj instanceof RegExp) 
       return true; 
      if(__sortCase) { 
       try { 
        [].sort(obj); 
        return true; 
       } catch(ex){ /* nothing to do */ } 
      } 
      return false; 
     }; 
    })(); 

    /// IE8 support 
    var AddArrayMapFunction = function() { 
     var $AP = Array.prototype; 

     $AP.map || ($AP.map = function(callback) { 
      if(!__isCallable(callback)) 
       throw new TypeError(callback + " is not a callable object"); 

      var thisArg = arguments[1], 
       len = this.length, 
       results = new Array(len); 
      for(var i=0; i < len; ++i) { 
       if(this.hasOwnProperty(String(i))) { 
        results[i] = callback.call(thisArg, this[i], i, this); 
       } 
      } 

      return results; 
     }); 
    } 
// then just call, when you need to use the collision lib 
AddArrayMapFunction(); 

、それは、あなたの配列に余分な要素が追加されます関数 "map"、すなわち:

myArray = ["a","b","c"]; 
// after add the function map() your array will look like 
["a","b","c",map:function(){...}] 

誰かがIE8のjquery - collision libをサポートしたいと思っているなら、これが助けてくれることを願っています。これは最善の方法ではありませんが、良い解決策です。

3

MSIE < 9配列のmap()関数はサポートされていません。 これはjQueryの拡張であるので、私はそれを解決する最も簡単な方法はそうのような、jQuery.map()または$.map()で延長でarray.map()への呼び出しを置き換えることであると思う:

var result = myarray.map(function() {});

を交換してください

var result = $.map(myarray, function() {});

あなたはいいですね。

+0

ああ、ありがとう。私はプラグインを更新する必要があります。私はそれをリリースしたときに私はテストしたことはありません。悪い私。 :-P – eruciform

関連する問題