0

ここで末尾のコンマに関する多くの情報を見つけます: 配列とオブジェクトの末尾のコンマは仕様の一部ですか?

「すぐそこ」のカンマについてです。

[
        { title: "..", display: function() { return ".."; } },
        { title: "..", display: function() { return ".."; } },
        { title: "..", display: function() { return ".."; } }, // <--right there
    ]

私の問題は、サードパーティのツールが末尾のコンマでこのリストを生成し、このツールのソースコードにアクセスできないことです。私

<body>
my stuff
<!-- the folloging div with the javascript comes from the 3rd party -->
<div class="item"><script type="text/javascript">
$(document).ready(function() {


    $.supersized({

        // Functionality
        slide_interval          :   8000,       // Length between transitions
        transition              :   1,          // 0-None, 1-Fade, 2-Slide Top, 3-Slide Right, 4-Slide Bottom, 5-Slide Left, 6-Carousel Right, 7-Carousel Left
        transition_speed        :   400,        // Speed of transition
        fit_always              :   0,          //Prevents the image from being cropped by locking it at 100% width.
        min_width               :   600,        //min-width of images
        random                  :   0,      //random img
        vertical_center         :   1,          //vertical alignment

        // Components                           
        slide_links             :   'false',    // Individual links for each slide (Options: false, 'number', 'name', 'blank')
        slides                  :   [           // Slideshow Images

    {image : 'image1.jpg', otherstuff: 'blah', moreotherstuff: 'lorem'},

    {image : 'image2.jpg', otherstuff: 'blub', moreotherstuff: 'ipsum'},


                                    ]
    });
});
</script></div>

そして今、IE7/IE8でこれを機能させる方法はありますか?

私が今見ている唯一の方法は(サードパーティを編集できず、サーバー上でアクセスできないため)、-そのdivなしで特別な出力を提供する-ajaxを介して通常の側をリクエストする-すべてを解析し、これを取得するdiv、最後のカンマを削除して JavaScript を実行

それは本当に私がやりたい方法ではありません。これを解決できる別の方法はありますか?

4

2 に答える 2

3

IE7/IE8 は、これらの配列をトリミングしない限り、1 要素大きい配列の長さを報告します。

サードパーティからのデータを受け入れるすべての JS メソッドを知っている場合は、それらのラッパーを作成できます。例えば:

var removeEmpty = function(array){
    var i, result = [];

    for (i = 0; i < array.length; ++i){
        if ( typeof array[i] != 'undefined' ){
            result.push(array[i]);
        }
    }

    return result;
};

$.supersized = (function() {
    var origMethod = $.supersized;

    return function(config) {
        config.slides = removeEmpty(config.slides); // get rid of undefined data in array
        return origMethod.call(this, config); // call original method
    };
}());
于 2013-10-18T13:04:08.190 に答える
1

いいえ、これらの末尾のコンマを IE で機能させる方法はありません。それは絶対にできません。これは、ブラウザーの JavaScript パーサーの基本的な部分です。

これは非常によく知られた問題です。つまり、サード パーティのツールに明らかに欠陥があり、適切にテストされていないことを意味します。あなたがどこからそれを手に入れたのかはわかりませんが、あなたがお金を払ったら、私があなただったら大声で文句を言うでしょう.

ソースで問題に本当に対処できない場合、残っている唯一のオプションは、IE に入る前に生成されたコードを修正することです。言うは易く行うは難しです。生成されたコードの複雑さに応じて、単純で予測可能な場合は正規表現を記述できるかもしれませんが、生成されたコードが複雑であるか、複雑さが変化する場合は、その考えに問題があるのではないかと思います。

于 2013-10-18T13:22:11.480 に答える