2017-01-15 6 views
0

これは私のコードの一部です(イベントリスナーが画像に追加されています)。イベントリスナーがIEとFFで動作していません

var overlay = this.overlay; 
    var icon_holder = this.icon_hld; 
    var docfrag = document.createDocumentFragment(); 
    var images = holder.querySelectorAll('img'); 
    var that = this; 
    function video_play() { 
     console.log(this); 
     this.style.display = 'none'; 
     this.parentNode.querySelector('.JGalleryMedia').style.display = ''; 
     this.parentNode.querySelector('.JGalleryMedia').play(); 
     this.parentNode.querySelector('.JGalleryMedia').autoplay = true; 
    } 
    [].forEach.call(images, function (img) { 
     img.addEventListener('click', JGallery.prototype.showMe.bind(that), false); 
    } 
} 

これはオペラとクロムでうまく機能していますが、IEとFFでは機能しません。 私はcaniuse.comを見たことがありますが、自分のコードで使用すべきでないものは見つかりませんでした。作業デモを見たい場合は、chromeやoperaでzaervax.irを開き、ギャラリーに行き、画像のサムネイルをクリックしてください。

答えて

0

ok IEの問題はforEach(.callなし)(私は上記の行の上にいくつかの行でこれを持っていました)でした。 FF(v47)にはそれぞれ問題があるようです。 FFを(v50に)更新しました(コードを変更せずに解決された問題)。そして、私はこれまで何度も使用しないことに決めました。代わりに使用しました。そう...

var i = 0; 
while(i < images.length){ 
    var img = images.item(i); 
    img.addEventListener('click', JGallery.prototype.showMe.bind(that), false); 
} 

、今それがうまく働いているように、あなたはzaervax.ir

でそれをチェックアウトすることができます
1

私はよく分かりませんが、このようなパラメータをeventListenerに渡すことはできません。

あなたはこのような無名関数試みることができる:あなたはES6アロー機能を使用できるパラメータとしてこのを渡したい場合は、これをアクセスすることができますように、また

img.addEventListener('click', function(){ 
    JGallery.prototype.showMe.bind(that) 
}, false); 

をshowMe()関数に追加します。それは、そのように行われます。

img.addEventListener('click', event => this.JGallery.prototype.showMe(event), false); 

More infos about arrow functions

これが動作しない場合は、あなたがあなたのコンソールを開き、任意のエラーメッセージがある場合を教えしようとすることができますか?

関連する問題