在javascript中打开本地文件系统中的文件

时间:2011-04-04 03:29:28

标签: javascript internet-explorer file firefox local

我正在寻找一种在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。我只看到一个新的空白窗口,但没有任何内容,但文件无法打开。

任何指针都会非常有用。谢谢

干杯, 阿比

3 个答案:

答案 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 );
  }