AJAX: testando XMLHttpRequest lendo arquivos locais

Olá pessoal!

Estou tentando meus fontes JavaScripts, mas estou tendo alguns problemas.

Problema 1:

tenho a seguinte linha (77):
if (result.readyState==4 && ( result.status==0 || result.status==200 ) )

deveria ser apenas
if (result.readyState==4 && result.status==200 )

Problema 2:
Em javascript não é possivel ler aquivos locais com o XMLHttpRequest. Seria uma falha de segurança. Sendo assim, como vcs testam os fontes sem precisar criar um servidor local? Quais as melhores formas para testes com arquivos locais?

No chrome temos que executa-lo dessa forma para que se permita os testes, mas isso impede que o result.status seja igual a 200:

este é meu fonte:

main.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>  
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">  
 	<script>
	var divModalEspera;  
	var Conexao;

	//==============================================================
	// Cria Modal Espera
	//==============================================================
	CriateModalEspera = function()
	{
		//======================================================
		var divModalEspera = document.createElement("div");
		divModalEspera.id		= "divModalEspera";
		divModalEspera.style.position	= "absolute";
		divModalEspera.style.bottom	= "0px";  
		divModalEspera.style.top	= "0px";  
		divModalEspera.style.right	= "0px"; 
		divModalEspera.style.left	= "0px";  
		divModalEspera.style.opacity = "0.5";
		divModalEspera.style.backgroundColor="#f3f3f3"; 
		divModalEspera.style.visibility	="hidden";
		divModalEspera.style.display = "none"; //this is needed mainly for Chrome
		divModalEspera.Close = function()
		{
			divModalEspera.style.visibility	="hidden";
			divModalEspera.style.display = "none"; //this is needed mainly for Chrome
		}
		divModalEspera.Show = function()
		{ 
			divModalEspera.style.visibility = "visible";
			divModalEspera.style.display = "block"; //this is needed mainly for Chrome
		} 	
		document.body.appendChild( divModalEspera );
		return divModalEspera;
	}


	// fonte base deste conhecimento: http://www.w3schools.com/dom/dom_httprequest.asp
	CreateLoader = function()
	{
		var result;

		try
		{
			// Firefox, Opera 8.0+, Safari
			result=new XMLHttpRequest();
		}
		catch (e)
		{
			// Internet Explorer
			try
			{
				result=new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch (e)
			{
				try
				{
					result=new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch (e)
				{
					alert("Seu navegador não suporta AJAX!");
					return false;
				}
			}
		} 
		

		result.loadDadosAction = function(Metod, Path, action )
		{  
			result.onreadystatechange = function() 
			{ 
				if (result.readyState==4 && ( result.status==0 || result.status==200 )  ) // <=== deveria ser apenas if (result.readyState==4 && result.status==200 )  
				{ 
					action(result.responseText );
				}
			}
			result.open( Metod, Path, true ); 
			result.setRequestHeader('content-type','text/plain; charset=iso-8859-1');
			result.overrideMimeType('text/plain; charset=iso-8859-1');
			result.send();	
		}
		
		result.sendDados = function(stra, strb, strc, action )
		{ 
			result.onreadystatechange = function() 
			{ 
				if (result.readyState==4 && result.status==200  )
				{ 
					action(result.responseText );
				}
			}
			result.open( stra, strb, strc ); 
			result.overrideMimeType('text/plain; charset=iso-8859-1');
			result.send();
		}
 
		return result;
	}




	//==============================================================
	// Cria meus objetos principais
	//==============================================================
	loadPage = function()
	{
		divModalEspera = CriateModalEspera(); 
		Conexao = CreateLoader();
	}


	teste = function( ) 
	{ 
		divModalEspera.Show(); 
		CallBack = function (str)
		{  
			alert(str);
			divModalEspera.Close();
		} 
		Conexao.loadDadosAction("GET", "values.html", CallBack );
	}
	</script>
	</head>  


	<body onload="loadPage()"  >
	<button type="button" onclick="teste();">teste</button> 
	</body>
</html>

Este é o arquivo que gostaria de ler localmente:

values.html

este é o texto que quero imprimir. Apenas isso.

Boa pergunta, eu sempre uso um servidor local. Se estiver trabalhando apenas com javascript, prefiro utilizar o node.js que é bem mais leve.

Estou fazendo um front end genérico baseado apenas no padrão w3c:
http://www.guj.com.br/java/301766-javascript-puro-formularios-genericos-e-geradores

É para CRUDs simples, ainda.
quando tiver como quero, algo em torno de 2000 linhas bem planejadas, isso tornará a criação de meus formulários e manutenção mais rápida.
A idéia é que não precise trabalhar com javascript e sim com um gerador de formularios:
http://www.guj.com.br/java/223655-extjs-popular-checkboxgroup-dinamicamente