JS播放器---错误:我的返回false不能与IE10一起使用,但可以与所有其他浏览器一起使用

时间:2013-01-10 00:48:56

标签: javascript jquery

你好ive使用javascript制作了一个mp3播放器,它在除了IE10之外的每个浏览器上都能正常工作

页面之前:http://www.mupiz.com/noon(尝试点击一首歌)

但IE10遵循链接并忽略了脚本......

这是我的剧本:

    var list = $("#playlist").find("a:not(.songLink)");
    listNC=new Array();


    for (var i=0;i<list.length;i++) { // we get all the song


        list[i].rel = i; 

        $(list[i]).parent().parent().prepend("<td class='notplayed' width='25px'><img src='../../images/lecteur-B-playlist-play.png' style='z-index:10000'/></td>");
        listNC[i]=girlify(list[i].href);


        list[i].onclick = function(event) { // onclick on each link


                   if($(this).attr('class')!="songLink"){
            soundManager.stopAll(); 
            current = this.rel; 



                event.preventDefault();
                        lire_current(); // this play the song
                       return false; // **this does not work!**

                       }

        };

这是CSS的专用部分

1 个答案:

答案 0 :(得分:0)

你有很多mix'n'match jQuery和常规的DOM代码,这有点令人困惑。我认为它只能在其他浏览器中运行,而不是你的运气。最后,我认为IE在调用preventDefault时出错,因为它有一个不同的事件模型而你没有使用平衡的jQuery事件。这意味着preventDefault无法正常工作,并且由于错误而永远无法访问return false

我会修改提取的代码,如下所示:

var listNC = [],
    current;

$('#playlist')
    .find('a:not(.songLink)')
    .each(function (i) {
        var $this = $(this);

        $this
            .attr('rel', i)
            .parent()
                .parent()
                    .prepend('<td class="notplayed" width="25px"><img src="../../images/lecteur-B-playlist-play.png" style="z-index:10000"/></td>');

        listNC[i] = girlify($this.attr('href'));
    })
    .on('click', function (e) {
        soundManager.stopAll();
        current = $(this).attr('rel');

        lire_current();

        // Event control:
        e.preventDefault(); //keeps link from being followed

        //I don't think you want either of these next two lines:
        e.stopPropagation(); //keeps event from bubbling...probably not what you want
        return false; //causes same as calling e.preventDefault() e.stopPropagation()...probably not what you want
    });

我当然无法测试它,但我认为它会做你想要的。