Как я могу запретить Firefox открывать обратную ссылку сортировки заголовка gridview в новой вкладке при нажатии Ctrl? - PullRequest
2 голосов
/ 12 января 2010

Я пытаюсь заставить мой элемент управления gridview в ASP.Net выполнять мультисортировку, основываясь на том, нажал ли пользователь клавишу Ctrl при попытке сортировки, щелкнув имя столбца. Проблема в том, что когда я использую Firefox, если я нажимаю на имя столбца с нажатой клавишей Ctrl, браузер пытается открыть ссылку «javascript: __ doPostBack ('ctl00 $ ContentPla ...» в новой вкладке. IE и Chrome не делайте этого, если ссылка не является реальной.

Есть ли способ, которым я могу запретить Firefox открывать ссылку в новой вкладке и все же вызывать нормальную обратную передачу страницы?

Спасибо.

1 Ответ

1 голос
/ 12 января 2010

Вам нужно захватить событие нажатия клавиши Ctrl, используя document.onKeyDown.

В вашем обработчике событий проверьте, была ли нажата 'Ctrl' (код клавиши 17), следующим образом:

function document_keyDown(e) {
    var KeyID = (window.event) ? event.keyCode : e.keyCode;
        if (KeyID == 17) { 
            ctrlDown = true;
        }
}

Здесь я устанавливаю переменную 'ctrlDown' в true.

Для события onKeyUp вы можете сделать прямо противоположное:

function document_keyUp(e) {
    var KeyID = (window.event) ? event.keyCode : e.keyCode;
    if (KeyID == 17) { 
       ctrlDown = false;
    }
}

Затем в событии click элементов вашего столбца вы можете проверить, был ли нажат Ctrl:

function columnElement_click() {
    if (ctrlDown != undefined && ctrlDown == true)
        alert("Ctrl + Click Received");
    return false;
}

Убедитесь, что обработчик кликов в вашем столбце возвращает false . В противном случае браузер выполнит код, но затем перейдет по адресу в атрибуте ссылки href.

Надеюсь, это поможет.

(см. Также: http://www.geekpedia.com/tutorial138_Get-key-press-event-using-JavaScript.html)

...