如何阻止 Firefox 在按住 Ctrl 键的情况下在新选项卡中打开 gridview 标头排序回发链接

发布于 2024-08-18 01:27:32 字数 265 浏览 7 评论 0原文

我试图让 ASP.Net 中的 gridview 控件根据用户在尝试通过单击列名称进行排序时是否按下 Ctrl 键进行多重排序。问题是,当我使用 Firefox 时,如果我按下 Ctrl 键单击列名称,浏览器会尝试在新选项卡中打开“javascript:__doPostBack('ctl00$ContentPla...”链接。IE 和 Chrome 均如此除非链接是真实的链接,否则不要这样做。

有没有办法可以阻止 Firefox 在新选项卡中打开链接并仍然使页面正常回发,

谢谢。

I am trying to make my gridview control in ASP.Net do a multi sort based on if the user pressed Ctrl key when trying to sort by clicking on a column name. The problem is that when I am using Firefox, if I click on a column name with Ctrl key pressed, the browser tries to open "javascript:__doPostBack('ctl00$ContentPla..." link in a new tab. IE and Chrome both don't do this unless the link is a real link.

Is there a way I can prevent Firefox from opening the link in a new tab and still cause the page to postback normally?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

回眸一笑 2024-08-25 01:27:32

您需要使用 document.onKeyDown 捕获按下 Ctrl 键的事件。

在事件处理程序中,检查是否按下了“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/教程138_Get-key-press-event-using-JavaScript.html)

You need to capture the event of the Ctrl key being pushed down, using document.onKeyDown.

In your event handler, check if 'Ctrl' (key code 17) was pressed, as follows:

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

Here, I'm setting a 'ctrlDown' variable to true.

For the onKeyUp event, you can do the exact opposite:

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

Then, in the click event of your column elements, you can check if Ctrl has been clicked or not:

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

Make sure your column click handler returns false. Otherwise, the browser will execute the code, but then navigate to the address in the link's 'href' attribute.

Hope this helps.

(See also: http://www.geekpedia.com/tutorial138_Get-key-press-event-using-JavaScript.html)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文