我正在使用基本身份验证,并希望通过javascript调用注销(清除信用证)。我编写了以下函数,该函数在IE和Firefox 3.6中工作,但现在在Firefox 4.0中不起作用。有没有解决方法
function Logout()
{
try{
var agt=navigator.userAgent.toLowerCase();
if (agt.indexOf("msie") != -1) {
// IE clear HTTP Authentication
document.execCommand("ClearAuthenticationCache");
}
else {
var xmlhttp = createXMLObject();
xmlhttp.open("GET",".force_logout_offer_login_mozilla",true,"logout","");
xmlhttp.send("");
xmlhttp.abort();
}
// window.location = "/rest/";
} catch(e) {
}
}
function createXMLObject() {
try {
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
}
// code for IE
else if (window.ActiveXObject) {
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
} catch (e) {
xmlhttp=false
}
return xmlhttp;
}
答案 0 :(得分:0)
解决方法可能是显示一个警告窗口来暂停脚本。
// Let's send the request to the server
xmlhttp.send("");
// Let's abort the request
var index = agt.indexOf("firefox");
if(index > 0)
{
var version = agt.substr(index, agt.length-index).split("/");
var vnum = parseInt(version[1]);
// alert window for Firefox > 4
if(vnum > 4) alert("Firefox logout");
}
xmlhttp.abort();
如果您收到以下错误:
Fehler: uncaught exception: [Exception... "prompt aborted by user" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: resource://gre/components/nsPrompter.js :: openTabPrompt :: line 468" data: no]
您必须输入about:config
并设置
prompts.tab_modal.enabled
至false