延迟上下文菜单外观

时间:2014-04-16 00:41:35

标签: javascript userscripts

我正在开发一个使用链接的用户脚本。当用户点击链接(右键或左键单击)时,它应该执行一些代码。代码正在向服务器发送ajax请求,并且基于响应可能会在某些情况下更改链接href attrubute,因此用户在未完成时不应使用该链接。我推迟自定义事件处理程序的左键单击,它工作正常,但我找不到延迟标准下拉菜单的方法,只是完全禁用它。

我真的很感激任何帮助。

1 个答案:

答案 0 :(得分:0)

这可能是synchronous AJAX request的少数有效用例之一。

如果您直接使用XMLHttpRequest,则可以将false作为第三个参数传递给.open()方法,从而发出同步请求:

var request = new XMLHttpRequest();
request.open('GET', '/bar/foo.txt', false);  // `false` makes the request synchronous
request.send(null);

if (request.status === 200) {
  console.log(request.responseText);
}

(上面链接的MDN页面的示例代码。)

如果您正在使用jQuery,则可以通过将选项async: false传递给jQuery.ajax()来发出同步请求。有关详细信息,请参阅jQuery: Performing synchronous AJAX requests

但是,请注意,通常,同步AJAX请求几乎总是一个坏主意。只要您的服务器(和您的Internet连接)非常快速可靠地处理请求,它可能会很好地工作,但如果您的服务器负载很重,或者您的连接开始丢弃数据包,则必须等待几秒钟才能进行任何鼠标单击产生影响可能会很快变得烦人。