1

I am looking out for a way to open a .xls file which is in temp directory using javascript in IE and Firefox browser. I tried using the javascript as follows,

function openMe(){
    var newwindow=window.open("file:///{path to temp dir}/names.xls","window2","");
}

The names.xls file exists there, I have verified it. As IE 7.0 does not let a user open a blank window due to security issues I am unable to make this work. I have not checked it with firefox yet. Is there any way to get this working?

I also tried having an empty.html which has this javascript and calling this openMe() body onLoad. And opening the empty.html from the parent HTML file. All I see is a new blank window without nothing but the file does not open.

Any pointers would be greatly helpful.Thanks

Cheers, Abi

3

3 Answers 3

3

Sorry, Abi, you're out of luck--you can't use JavaScript in a browser to open a file on the local file system. This is a security issue and makes perfect sense if you think about it; you wouldn't want people writing scripts on their web sites that can access files on your local file system and possibly read data from them!

1
  • 1
    Yes, but what if I write a script on MY web site (localhost) and I want to access files on the local file system?
    – Michael
    Commented Apr 22, 2012 at 18:20
0

HTML5 permits opening of local files as long as the computer user is selecting the files. You should be able to find more information on the JavaScript API along with sample code on how to use that API here: http://www.html5rocks.com/en/tutorials/file/dndfiles/

0

Suggest you use AJAX. Small API follows.

/* **************************** 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 );
  }

Not the answer you're looking for? Browse other questions tagged or ask your own question.