我正在寻找一种在IE和Firefox浏览器中使用javascript打开临时目录的.xls文件的方法。我尝试使用如下的javascript,
function openMe(){
var newwindow=window.open("file:///{path to temp dir}/names.xls","window2","");
}
names.xls文件存在,我已经验证了它。由于安全问题,IE 7.0不允许用户打开空白窗口,因此我无法使其工作。我还没有用firefox检查过它。有没有办法让这个工作?
我也尝试过拥有这个javascript并调用openMe()body onLoad的empty.html。并从父HTML文件中打开empty.html。我只看到一个新的空白窗口,但没有任何内容,但文件无法打开。
任何指针都会非常有用。谢谢
干杯, 阿比
答案 0 :(得分:3)
抱歉,Abi,你运气不好 - 你不能在浏览器中使用JavaScript在本地文件系统上打开文件。这是一个安全问题,如果你想一想就很有意义;你不希望人们在他们的网站上编写脚本,这些脚本可以访问本地文件系统上的文件并可能从中读取数据!
答案 1 :(得分:0)
只要计算机用户选择文件,HTML5就允许打开本地文件。您应该可以在此处找到有关JavaScript API的更多信息以及有关如何使用该API的示例代码:http://www.html5rocks.com/en/tutorials/file/dndfiles/
答案 2 :(得分:0)
建议您使用AJAX。接下来是小型API。
/* **************************** AJAX ************************** */
///
/// Source
/// http://www.quirksmode.org/js/xmlhttp.html
/// XMLHttpRequestForms is a local auxiliary variable
var XMLHttpRequestForms =
[
function ( ) { return new XMLHttpRequest ( ); },
function ( ) { return new ActiveXObject ( "Msxml2.XMLHTTP" ); },
function ( ) { return new ActiveXObject ( "Msxml3.XMLHTTP" ); },
function ( ) { return new ActiveXObject ( "Microsoft.XMLHTTP" ); }
];
// ******************************************* createXMLHTTPObject
// local entry point
/// createXMLHTTPObject is a helper function
function createXMLHTTPObject ( )
{
var xmlhttp = false;
for ( var i = 0; ( i < XMLHttpRequestForms.length ); i++ )
{
try
{
xmlhttp = XMLHttpRequestForms [ i ] ( );
break;
}
catch ( e )
{
continue;
}
}
return ( xmlhttp );
}
/// ************************************************ read_contents
// global entry point
/// <synopsis>
/// read_contents ( url )
///
/// <summary>
/// retrieves the contents of the specified URL
///
/// <param name="url">
/// a string containing the URL whose contents are to be read
///
/// <returns>
/// a string containing the contents of the URL
///
/// <example>
/// var text = read_contents ( "footer.ini" );
function read_contents ( url )
{
var request = createXMLHTTPObject ( );
if ( !request )
{
return ( null );
}
request.open ( 'GET', url, false );
request.setRequestHeader ( 'Content-Type', 'text/html' );
request.send ( );
return ( request.responseText );
}