3

Safari では発生しないと思われる Firefox で奇妙な問題が発生しました。

行のセットを含むテーブルがあり、各行には独自の onclick および ondblclick イベントがあります。オブジェクトの 1 つがダブルクリックされると、最初に onclick に関連付けられた関数が起動され (予想どおり)、別の行 (ダブルクリックされたものとは異なる) が削除されます。その後、dblclick に関連付けられた関数は起動しません。

行を削除する行 (クリックした行ではなく、別の行) にコメントを付けると、onclick イベントと ondblclick イベントの両方が発生します... 両方のイベント関数のコードを添付します。

ret.onclick = function(){
    // Trigger click event
    var evt = arguments[0] || window.event;
    self.signalClick(evt.target || evt.srcElement);

    if(elem == this.selected) return;

    if(self.selected != null){
        // Set list element to not selected
        var telem = document.getElementById(self.getChildID(self.selected['id']));
        telem.setAttribute('class', 'gui_list_uselected');

        // Remove previously selected element summary
        var telemexp = document.getElementById(self.getChildID(self.selected['id']) + '_exp');
        if(telemexp) telemexp.parentNode.removeChild(telemexp); // FAULTY LINE!
    }

    ret.setAttribute('class', 'gui_list_selected');
    self.selected = elem;

    // Add element summary to the list
    appendAfter(ret, self.drawSummary(elem));
};

ret.ondblclick = function(){
    // Trigger double click event
    var evt = arguments[0] || window.event;
    self.signalDblClick(evt.target || evt.srcElement);
};
4

1 に答える 1

0

Firefox は正常に動作します。仕様によると、onclick はとにかく ondblclick の前に起動します。これをチェックして、それを克服するために答えてください。

于 2012-05-02T07:21:31.140 に答える